您的位置:首页 > 数据库 > MariaDB

MySQL与MariaDB的主从数据复制设置步骤

2016-06-22 14:37 836 查看
前提条件:

1、主数据库是使用CentOS7.0操作系统,安装了MariaDB数据库(安装数据库请参考 http://blog.csdn.net/mfkfkulkwxf/article/details/51686121)

2、从数据库是使用Windows10操作系统,安装了MySQL数据库(Windows下的数据库安装请自行上网搜索)

主从数据库设置步骤如下:

1、设置主数据库的配置文件:

    在/etc/my.cnf文件中,加上

    server-id=1 #数据库的唯一ID号,默认以1开始

    log-bin=mysql-bin #启用二进制日志

 配置后的结果如下图中的红色框:

 


2、在主数据库建立账户并授权从数据库访问:

 在命令行中录入 grant replication slave on *.* to 'root'@'%' identified by '12345678'; 如下图

 


 在这里需要注意以下几点:

 1)我是使用root用户进行测试,在生产环境中是不建议使用的,必须自己重新创建一个新用户进行登录,

 2) %表示允许所有的IP访问,可以自己设置只允许哪些IP访问,如把%替换为192.168.1.3表示只允许这个IP访问

3、重新启动MariaDB数据库

 在命令行录入 systemctl restart mariadb ,如下图:

 


4、检查主数据库的master状态:

 在命令行录入 show master status; 如下图:

 


 请记下File与Position的数据,为从数据库作准备.

5、设置从数据库的配置文件:

 打开my.ini配置文件(如不知道配置文件位置,请自行上网查找),添加以下两句:

 log-bin=mysql-bin

 server-id=2

 效果如下图:

 


6、重启从数据库

7、使用从数据库命令行方式配置:

 打开命令行,并登录到从数据库的MySQL.

 录入以下命令 change master to master_host='192.168.137.101',master_user='root',master_password='12345678',master_log_file='mysql-bin.000001',master_log_pos=245;
效果如下图:



 请注意以下几点:

 1)master_host是指主服务器的IP

 2)master_user是指使用哪个用户登录主服务器

 3)master_password是指登录密码

 4)master_log_file是指在第4个步骤中的File名称

 5)master_log_pos是指在第4个步骤中的Position

8、启用从数据库复制功能(这个步骤是在从数据库的MySQL中配置)

 在命令行中录入  start slave;

9、查看从数据库的复制功能状态

 在命令中录入 show slave status\G;
结果显示如下:

 *************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.137.101  #主数据库地址

                  Master_User: root    #使用哪个用户登录

                  Master_Port: 3306    #连接端口

                Connect_Retry: 60     

              Master_Log_File: mysql-bin.000001  

          Read_Master_Log_Pos: 245  #同步读取二进制日志的位置,必须大于或等于下面的Exec_Master_Log_Pos数据

               Relay_Log_File: PC201501300933-relay-bin.000002

                Relay_Log_Pos: 391

        Relay_Master_Log_File: mysql-bin.000001

             Slave_IO_Running: Yes #必须为Yes,否则需要查找原因

            Slave_SQL_Running: Yes #必须为Yes,否则需要查找原因

              Replicate_Do_DB:

          Replicate_Ignore_DB:

           Replicate_Do_Table:

       Replicate_Ignore_Table:

      Replicate_Wild_Do_Table:

  Replicate_Wild_Ignore_Table:

                   Last_Errno: 0

                   Last_Error:

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 245

              Relay_Log_Space: 556

              Until_Condition: None

               Until_Log_File:

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File:

           Master_SSL_CA_Path:

              Master_SSL_Cert:

            Master_SSL_Cipher:

               Master_SSL_Key:

        Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error:

               Last_SQL_Errno: 0

               Last_SQL_Error:

  Replicate_Ignore_Server_Ids:

             Master_Server_Id: 1

1 row in set (0.00 sec)

10、然后在主数据库中创建数据库、表、插入/删除/更新数据等操作,在从数据库中查看相关的变化。请一定要关闭防火墙,否则导致数据复制不成功。

附:在查看其他的文章中,有关于其他从数据库的配置,如下:

在从服务器数据库配置文件:
server-id        = 2  
master-host      =  192.168.137.101  
master-user      =  root
master-password  =  12345678    
replicate-do-db  =  test_master_slave #指定只允许某个数据库复制功能
master-port      =  3306
log-bin          = mysql-bin

如果是使用以上的配置,则在我写的第5个步骤中不执行我写的内容,而是执行以上的配置;并且也不执行第7个步骤。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: