mysql主从服务器同步

假设主服务器的IP为:192.168.1.14       从服务器的IP为192.168.1.5

1.配置主服务器

  首先配置主服务器的mysql配置文件my.ini

       [mysqld]

       #表示主服务器

        server-id=1

       #记录日志

         log-bin=mysql-bin01 

        #提供数据同步的数据库,再次数据库下的数据可以同步

         binlog-do-db=pension

        #设置不提供数据同步的数据库,则次数据库下的数据不进行同步

         binlog-ignore-db=mysql  

        #设置日志的过期时间

         expire_logs_days=10 

 利用管理员身份登录命令提示符后,切换到mysql的安装目录bin文件所在的位置,我安装的位置是E:\mysql5.7\bin

然后输入mysql -uroot -p进行mysql的登录

 

(1)     输入 : show master status;

记住 fileposition的值         ---一定要记住,后面需要用到

(2)     查看LOG_BIN的状态

输入:show variables like “%log_bin%”;

如果Log_bin为NO表示正常开启

(3)  创建主服务器用户及其权限

    输入:grant replication slave on *.* to ‘mysql’@’192.168.1.5’identified by ‘123456’ with grant option;

注:这里创建了一个名为'mysql',密码为'123456'的用户,地址为从服务器地址,即只允许该用户拥有从地址192.168.1.5访问数据库并备份表的权限。

这里还要注意一点:replication 属于grant权限,后面只能用*.*,不能指定某个数据库或者某个数据表,如果指定类似select等普通权限可具体到数据表。

(4)重启主服务器

输入:mysql>flush privileges 刷新数据库

退出:quit;

重新进入mysql服务器:mysql -uroot -p

2.配置从服务器

进入从服务器mysql的配置文件my.ini

  在[mysqld]节点下添加内容

#表示从服务器

 server-id=2 

#记录日志

 log-bin=mysql-bin02

#需要同步的数据库

 replicate-do-db=pension_center1 

#同步数据库指定表(此处可以不设置)

 replicate-do-db=pension_center1.test 

#不记录日志的数据库

 replicate-ignore-db=mysql

#设置日志的过期时间

 expire_logs_days=10

(1)    从服务器获取权限

  输入change master to

      master_host='192.168.0.88',#主服务器地址

     master_user='mysql',#主服务器数据库用户名

     master_password='123456',#主服务器数据库密码

     master_log_file='mysql-bin01.000001',  #填写步骤1(1)中File项的值

     master_log_pos=4880, #填写步骤1(1)中Position的值

     master_port=3306;端口值 

(2)     检查连接:

输入:show slave status\G;

如果:slave_IO_running和slave_sql_running同时为YES,则连接成功

(3)重启主服务器

输入:mysql>flush privileges 刷新数据库

退出:quit;

重新进入mysql服务器:mysql -uroot -p

(4)执行模式命令:

   输入:start slave;

(5)执行查看进程状态的命令:

      输入:show processlist;

查看User值为system user的项,如果其State值为“Waiting for master to send event”和”Slave has read all relay log: waiting for the slave I/O thread to update it“,则从服务器已连接主服务器。

(6)执行查看从服务器的运行命令状态

      输入:show slave status\G;  

  

如果Slave_IO_Running的值为Yes,Slave_SQL_Running的值为Yes,则从服务器正常运行。如果不正确,查看错误日志,一般位于data目录下。

3.测试

从服务器数据库中新建数据库pension,主服务器中新建表并插入数据,查看从服务器数据库,是否存在相同的数据库表及数据。

在主服务器中添加userinfo表并添加字段 测试如图:

在从服务器中查看

数据已经添加过来

此时注意:如果主服务已经有表结构的存在,则从服务器的表结构应和主服务器保持一致

中间可能遇到很多问题导致连接不成功,BUT!!!请耐心查看日志,进行 排查

4.错误原因,如果是:

这种情况Slave_SQL_Running: No

1.程序可能在slave上进行了写操作

2.也可能是slave机器重起后,事务回滚造成的.

一般是事务回滚造成的:

解决办法:

mysql> slave stop;

mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

mysql> slave start;

这样就OK了。

Ok!!!同步继续

posted @ 2016-12-29 12:22  吃辣椒的小毛驴  阅读(289)  评论(0编辑  收藏  举报