mysql 主从分离配置

主服务器: IP: 47.94.157.59

从服务器: IP: 112.74.215.215

一、       主服务器相关配置

  1. 进入mysql  

              

        2、创建一个数据库

                 

                 选中该数据库   use  test;

        3、给这个数据库配置一个用户( http://blog.sina.com.cn/s/blog_9179ad990102x4gi.html

               grant replication slave on *.* to '用户名'@'主服务器' identified by '用户密码';

              mysql>  grant replication slave on *.* to 'testuser'@'47.94.157.59' identified by '12345678';

              mysql>  flush privileges #刷新权限

              注释:授权用户testuser只能从112.74.215.215这个地址访问主服务器47.94.157.59的数据库,并且只具有数据库备份的权限

       4、修改/etc/my.cnf配置文件vi /etc/my.cnf

                [root@iZ2zej7zfjle71smpwkp30Z ~]# cd /etc

                [root@iZ2zej7zfjle71smpwkp30Z etc]# vi my.cnf

                在文件[mysqld]下添加下面数据

                           server-id=1  #表示主服务器
                           log-bin=mysql-bin  #启动MySQL二进制日志系统,
                           binlog-do-db=ourneeddb  #需要同步的数据库
                           binlog-ignore-db=mysql  #不同步mysql系统数据库,若还有其它不想同步的,继续添加

                          

                 [root@localhost ~]lmnp restart #重启服务

        5、查看主服务器master状态(注意File与Position项,从服务器需要这两项参数)

                mysql> show master status;

               

        6、导出数据库

         导出数据库之前先锁定数据库

                     flush tables with read lock;    #数据库只读锁定命令,防止导出数据库的时候有数据写入

                     unlock tables; #解除锁定

            导出数据库结构及数据:

                         mysqldump -uroot -p ourneeddb > /home/ourneeddb.sql

         导出存储过程及函数:

                         mysqldump -uroot -p -ntd -R ourneeddb > ourneeddb_func.sql

           注释:tips: -ntd 导出存储过程、 -R导出函数

二、       从服务器相关配置 

         1、修改/etc/my.cnf配置文件vi /etc/my.cnf 

                [mysqld]下添加以下参数,若文件中已经存在,则不用添加
                                 server-id=2                #设置从服务器id,必须于主服务器不同
                                 log-bin=mysql-bin           #启动MySQ二进制日志系统
                                 replicate-do-db=ourneeddb   #需要同步的数据库名
                                 replicate-ignore-db=mysql      #不同步mysql系统数据库
                                 [root@localhost~ ]/etc/init.d/mysqld restart    #重启服务

                        

        2、数据导入(把主服务器的数据导入) 

       3、配置主从同步

                      [root@localhost~ ]mysql -uroot -p
                     mysql>use mysql
                     mysql>stop slave;
                     mysql>change master to
                               master_host='47.94.157.59',
                               master_user='testuser',
                               master_password='12345678',
                               master_log_file='mysql-bin.000001',(主服务器查询的参数)
                               master_log_pos=107;   #log_file与log_pos是主服务器master状态下的File与Position
                    mysql>start slave;
                    mysql>show slave statusG;

                    

                 

                注释:Slave_IO_Running: Yes   Slave_SQL_Running: Yes这两项必须为Yes

                          Log_File、Log_Pos要于master状态下的File,Position相同

        注意:不能再从服务器添加数据   否则会主服务器添加的时候会报主键冲突

          锁表 清理从服务器数据 清除binlog

                  purge master logs to'mysql-bin.000010';   #清除mysql-bin.000010之前的

                  purge master logs before '2018-3-8 00:00:00'; #清除2018-3-8 00:00:00'之前的

                  reset master 清空日志文件

                  iptables -F 清除防火墙规则

                  PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 1 minute); 清除1分钟之前的

       Last_IO_Errno错误代码说明

               http://blog.csdn.net/u011698346/article/details/37934505

原文地址:https://www.cnblogs.com/sanqiyi/p/8522404.html