zoukankan      html  css  js  c++  java
  • Mysql主从配置讲解

    一个主机上管理多个mysql实例

    资源有限,只能用一台主机备份多个机器上的mysql,所以怎么才能在一台机器上运行多个mysql呢,肯定是要包括不同的端口,搜索一下mysql multi 可以配置管理多实例,

    具体配置,还要等实验后再过来记录~

       实验记录

    1.1 修改/etc/my.cnf  

    分别配置[mysql_multi]  [mysqldN] ###[mysqldN]的配置和普通的mysql配置一样,但是只需要server-id 与主机的server-id不同

    1.2初始化数据库

    /usr/bin/mysql_install_db --datadir=/data/mysql/3319/data # datadir 在my.cnf里配置~每初始化一次,密码会保存在/root/.mysql_secret文件里

    1.3启动mysql_multi  

    /usr/bin/mysqld_multi start 1-n;#GNR 是指mysqlN 中的N,N要为正整数

    1.4登陆mysql 实例

    mysql -uroot -p -S /var/lib/mysql/mysql3319.sock    ###sock文件路径在配置文件里配置

       注意:最好配置multi.log   方面观察日志

    2、如何配置主从框架

    这个是工作的核心,怎么配置才是实现主从

    实验记录:

    2.1主机上必需配置三个配置

    server-id =1 ---服务器唯一ID,默认是1,一般取IP最后一段

     log-bin=PATH/log ---启用二进制日志,自定义目录

    binlog_format=mixed---binlog的格式也有三种:STATEMENT,ROW,MIXED。 MBR 模式中,SBR 模式是默认的

    2.2主机上创建备份权限用户 

    grant replication slave on *.* to “库名”@'从库IP' identified by 'password'----安全起见,最好只准许从库登陆

    Ps:若'@'%' identified by 'password'; 表示所有客户端都可能连,只要帐号,密码正确,     

    flush privileges;

    登录主服务器的mysql,查询master的状态

      mysql>show master status;

    2.3修改从服务器的slave配置

     server_id =2   ---只要不和主server-id的值一致即可

     log-bin=mysql-bin   ---不是必须启用二进制日志,可配可不配

     socket=/var/lib/mysql/mysqlport.sock ---为了方便区分,加上端口名

     datadir=/data/mysql/port/data ---路径自定,为了区分

    : 因为数据量较大,dump数据比较浪费时间,但是锁表影响业务,所以我是通过物理拷贝的数据,直接到datadir下面,除了server-id 和datadir不和主机一样,其他全部一样,也必须一样,否则,就会出现从库的IO线程启动失败

    3如何进行首次同步

    首先要明确的是,线上的业务是不能停的,这就意味着主数据库是不能停止的,那如何进行首次备份呢?这个是不可忽略的问题~待寻答案

    实验记录       

    3.1上只读锁 

    flush tables with read lock ;

    3.2记下偏移量

    show master status;

    3.3拷贝数据

    这里有两种选择

     3.3.1mysqldump  

    优缺点配置文件不用完全一致,但是操作时间较长,需要初始化数

    mysqldump -uroot -p  --opt -R --all-databases|gzip -9 >/tmp/XX.sql.gz ---压缩一下,等会传输的时候节省时间,当然到从库那边还要先gunzip. 

                           mysql -uroot -p <XX.sql

    3.3.2物理备份

    操作时间短,除个别配置,其他配置要保持完全一致, 可以不用初始化数据库

    主库datadir路径下的文件——》 从库datadir路径下即可

    3.4解锁 unlock tables

    3.5启动从库  

    mysql -u root -p -S /var/lib/mysql/mysql3319.sock  查看数据库是否全部导入

    3.6配置从服务器Slave

    change master to maste_host='主库ip',---配置主库的方式跟mysql 版本相关,较老版本可直接在配置文件中

                                 ->master_user=”库名”,  ---配置主库

                                 ->master_password=”PASSWORD”,

                                 ->master_log_file=”mysql-bin.XXXX”

                                 ->master_log_pos=XXXXXX;

    新版本可以如下配置
    mysql>

    master_host='主机ip',master_user='库名',master_password='password',
    master_log_file='mysql-bin.XXXX',master_log_pos=XXXXXX;  

    ----注意不要断开,308数字前后无单引号。

    mysql-bin.XXXX 和master_log_pos=XXXXXX代表show master status; 查询master的状态

    如登录主服务器的mysql,查询master的状态结果为

     注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

    mysql-bin.XXXX 和master_log_pos=XXXXXX分别为

    mysql-bin.000004 和master_log_pos=308 

    sql>start slave;    ----启动从服务器复制功能

     3.7启动从库服务

    start slave  启动方式也和数据库版本相关,较老版本可能用slave start 启动

      3.8查看主从状态  

    show slave statusG;    这两个进行启动,说明主从配置成功了

                        

  • 相关阅读:
    laravel 多对多 belonsToMany
    C语言union关键字
    FW:程序在内存的划分(转)
    操作系统:进程/线程同步的方式和机制,进程间通信
    FW:考查嵌入式C开发人员的最好的16道题(转)
    操作系统死锁产生、条件、和解锁
    100层高楼摔2个鸡蛋的问题?
    【转】看完这个你的位运算学得就差不多了
    函数递归的几个例子
    如何查看服务器(linux系统)当前的负载信息(转)
  • 原文地址:https://www.cnblogs.com/nzg-noway/p/6526234.html
Copyright © 2011-2022 走看看