Mysql的主从配置

一。 Mysql 主从同步

1.1定义:实现数据自动同步的服务结构,结构分为2种角色

               主服务器:接受客户端访问的数据库服务器

               从服务器:自动从主库服务器同步数据到本机的数据库服务器

 

2.2:原理:

    I/O线程: 复制master主机的binlog日志文件里的SQL到本机的relay-log文件里

    SQL线程:执行本机relay-log文件里的sql语句,重现master的数据操作

3.3配置步骤:

        1.3.1服务器的角色:

             192.168.4.50 客戶端(client)
           192.168.4.51 主(master) 運行數據庫服務器 管理員root 本機能夠登陸
           192.168.4.52 從 (slave)   運行數據庫服務器 管理員root 本機能夠登陸

        1.3.2.配置主服务器 192.168.4.51

              1.启用binlog日志文件

                           [root@host51 ~]# vim  /etc/my.cnf

                               server_id=51
                              log-bin=master51
              :wq

                    .[root@host51 ~]# systemctl  restart mysqld
                   .[root@host51 ~]# ls   /var/lib/mysql/master51.*
            2.用户授权   

                      [root@host51 ~]# mysql -uroot -pabc123
                    mysql>  grant  replication slave on *.* to repluser@"%" identified by "123qqq...A";
                    mysql> show master status;

                      

       1.3.3:配置从服务器: 192.168.4.52

                      1.指定server_id

                      [mysql]

                           server_id=52

                     [root@host52 ~]# systemctl  restart  mysqld

                   2.  指定主服务器信息:

                            [root@host52 ~]#  mysql -uroot -p123456

                         mysql> change master to master_host="192.168.4.51",master_user="repluser",master_password="123qqq...A",master_log_file="master51.000001",master_log_pos=441;

                           mysql>  show slave status\G;

                               Slave_IO_Running: No        # 未开启slave时这两个线程的状态是:no 
                               Slave_SQL_Running: No

               3.启动slave进程        

                                mysql> start slave;

             4.查看进程信息:

                                 mysql> show slave status\G;

                              Slave_IO_Running: Yes           #这两个线程必须时显示yes
                            Slave_SQL_Running: Yes


                       从库的相关文件         

                                  cd  /var/lib/mysql/

                                                中继日志文件                      host52-relay-bin. index   索引文件

                                                                                             host52-relay-bin.编号                                                                                                                                                    

                                        主服务器的信息:         maste.info

                                        中继日志文件信息:relay-log.info                              
                              

4.4验证配置:

           1 在主服务器添加访问数据的连接用户

                 mysql> create database db7;

                   mysql> grant all on db7.* to webuser@"%" identified by "123qqq...A";          

           2. 在客户端连接主服务器,对数据做操作

               [root@host50 admin]# mysql  -h192.168.4.51 -uwebuser -p123qqq...A

              mysql> create table t1(id int);

              mysql> insert into t1 values (10101);

             3  在服务机器本机查看是否有和主机服务器的数据一致

二。mysql 主从同步的模式

    2.1 mysql 主从同步结构模式

       一主一从

      一主多从:给当前主服务器51,再配置1台从数据库服务器53

                      1在服务机器53上运行mysql服务且管理员能够本机登陆

                      2.在没有配置从服务机器53之前,要有主服务器上的数据:

[root@host51 ~]#  mysqldump -uroot -pabc123 db7 >  /root/db7.sql
 [root@host51 ~]#    scp  /root/db7.sql  root@192.168.4.53:/root

mysql>   create database db7;
mysql>   use db7;
mysql>  source  /root/db7.sql;
                 3.设置主机53的server_id

                 [root@host53 ~]#  vim  /etc/my.cnf

                   server_id=53

             4指定主服务器的信息:

                    [root@host53 ~]# mysql -h192.168.4.51 -urepluser -p123qqq...A   #测试在之前在51主机里面添加用户权限能否登陆

mysql>exit
   [root@host53 ~]# mysql -uroot -p123456

mysql>exit

mysql>  change master to

master_host="192.168.4.51",

master_user="repluser",

master_password="123qqq...A",

master_log_file="master51.000001",

master_log_pos=1817;

                5.启动slave进程

mysql>   start slave;

               6.查看进程信息:
mysql> show slave status\G
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
           7.客户端的测试:

            1.在客户端50主机连接主数据库服务齐访问数据

[root@host50 ~]# mysql -h192.168.4.51 -uwebuser -p123qqq...A
mysql>  insert into t1 values(88);
mysql>  select * from t1;
mysql>    create table t2(name char(10));
mysql>  insert into t2 values("bob");

          2.分别在2台从服务器本机查看数据(可以看到和主服务器一样的数据)          

[root@host52 mysql]# mysql -uroot  -p123456;
mysql> select  * from db7.t1;
mysql>   select  * from  db7.t2

 

 主从从

       给当前的从服务器52配置一台从服务器192.168.4.54   

      1配置52

                 1.1 启用binlog日志

[root@host52 mysql]#   vim  /etc/my.cnf
log_bin=master52      启用binlog日志
log_slave_updates                # 启用链式复制      

[root@host52 mysql]systemctl restart mysql    # 重启动mysql 

               1.2  用户授权

mysql>  grant replication slave on *.* to repluser@"%" identified by "123qqq...A";
           

                1.3 查看binlog日志信息

mysql>  show master status;
 

   2 配置54

          在没有配置从服务机器54之前,要有主服务器上的所有数据数据:

             主机 52上面的操作:   [root@host52 mysql]#   mysqldump -uroot -p123456 db7 > /root/db7.sql     #备份 db7的数据

                      [root@host52 mysql]#   scp   /root/db7.sql  root@192.168.4.54:/root

            在主机 54上面的操作 :mysql>  create database db7;        

                    mysql> use db7;

                    mysql> source  /root/db7.sql;                                         # 恢复db7的数据库
 

           2.1指定server_id

[root@host54 mysql]#   vim  /etc/my.cnf
server_id=54


[root@host54 ~]# mysql -h192.168.4.52 -urepluser -p123qqq...A
 

       2.2  指定主服务器信息

mysql> change master to master_host="192.168.4.52",master_user="repluser",master_password="123qqq...A",master_log_file="master52.000002",master_log_pos=441;

       2.3  启动slave 进程

mysql> start slave;

 2.4 查看进程信息

mysql> show slave status\G;
 

  3测试配置:

    3.1 在客户端连接主服务器51存数据

[root@host50 admin]# mysql -h192.168.4.51 -uwebuser -p123qqq...A

mysql> use db7;

mysql> insert  into t1 values(8999);

     3.2 在52和54 主机上面查看数据

mysql> select  * from   db7.t1;
[root@host54 ~]#  mysql -uroot -p123456 -e "select * from  db7.t1";
      

     主主结构  :  把数据库服务机器55和56 配置为主主结构

2.2   mysql 主从同步复制模式:

          异步复制: 

           全同步复制模式:

          半同步复制模式:

案例 : 把数据库服务器52的半同步复制模式

          步骤 :

                1.查看是否允许动态加载模块

                show variables like 'have_dynamic_loading';

               2 加载模块

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

                3.查看加载信息

  1. mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';

               4.  启用模块

mysql>  SET GLOBAL rpl_semi_sync_master_enabled = 1;
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
 

           5 查看啓用信息
            mysql> show  variables  like  'rpl_semi_sync_%_enabled';

        6 修改配置文件使其配置永久生效
            ]# vim /etc/my.cnf
            [mysqld]
plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
:wq

 

2.3  mysql 主从同步常用配置选项(/etc/my.cnf) 

        2.3.1 应用在主服务器上的配置选项

               binlog_do_db=数据库名   //只允许同步的库

               binlog_ignore_db=数据库名   //不允许同步的库

        2.3.2  应用在从服务器上的配置选项

          vim  /etc/my.cnf

         log_slave_updates  //记录从库更新,允许链式复制

          replicate_do_db=数据库名      //仅同步的库
          replicate_Ignore_db=数据库   //只不同步的库

          relay_log=日志名    //自定义中继日志文件名

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值