mysql 主从同步 (linux)

 

 

 

自己的虚拟机环境;

 

 

master:192.168.202.131

slave ;192.168.202.132

一、 主服务器配置

1、编辑/etc/my.cnf文件在mysqld下添加以下字段

server-id=131         #主服务器标识,主要是唯一性,没什么限制

log-bin=mysql-bin   #指定二进制日志文件的名称

binlog-do-db=mysql   #需要同步的数据库,

2、保存并重启mysql服务

3、设置读锁

mysql> flush tables with read lock;

mysql> flush privileges;

4、查看当前二进制日志名和偏移量值,从库按这个点开始进行数据恢复,之前的数据需要人工同步(也就是备份)

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

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000005 |      409 | mysql         |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

5.刷新日志

mysql>flush logs;  #因为刷新日志file的位置会+1,即File变成为:mysql-bin.000006

                   (很多问题出在这一步)

6、解除读锁

mysql> unlock tables;

7、在主服务器上为从服务器创建一个用于同步的用户

mysql>grant replication slave on *.* to u01@'192.168.202.%' identified by '123456';

此种方式做同步,这一步是必须要做的或者是已经授权过的,不然下面会   报错

二、从服务器配置

 

1、编辑/etc/my.cnf文件在mysqld下添加以下字段

server-id=132         #从服务器标识

log-bin=mysql-bin   #与主服务器一致

replicate-do-db=mysql  #同步的数据库

relay-log=relay_log    #

2、保存并重启mysql服务

3、[root@localhost ~]# mysql -uroot -p123456

mysql>slave stop;#停止slave同步进程

#执行同步语句

mysql>  change master to master_host='192.168.202.131',

    ->     -> master_user='root',

    ->     -> master_password='123456',

->     -> master_log_file='mysql-bin.000006',

#保持与主服务信息一致(因为在主服务器上已经刷新,所以file位置要加1)

->     -> master_log_pos=409;   #保持主服务信息一致

mysql> start slave  #开启slave同步进程

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

以上这两个参数的值为Yes,即说明配置成功!

三、  验证测试

1、在主库中新增一张表,添加测试数据

2、查看从库中是否完成同步

四:报错信息整改;

1、

Got fatal error 1236 from master when reading data from binary log: 'Client requested

master to start replication from impossible position'

主从的log-pos没有正确配好

2、

error reconnecting to master 'root@192.168.202.131:3306' - retry-time: 60

连不通主机,确认是否有sql服务或者是否关闭防火墙

3、

启动从时报错:

mysql> start slave;

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

      原因:日志认证有问题

       执行:mysql> reset slave,然后重新把以上sql语句写上去

五、

1、主从同步,经测试,是单向的,只有master数据库里面的东西能同步到slave,反之则不行

2.master重启sql服务对同步无影响

3.这种方式的同步,数据库内容不一致也可进行同步

4.主机和备机重启,不影响同步

 

 

自己的虚拟机环境;

master:192.168.202.131

slave ;192.168.202.132

一、 主服务器配置

1、编辑/etc/my.cnf文件在mysqld下添加以下字段

server-id=131         #主服务器标识,主要是唯一性,没什么限制

log-bin=mysql-bin   #指定二进制日志文件的名称

binlog-do-db=mysql   #需要同步的数据库,

2、保存并重启mysql服务

3、设置读锁

mysql> flush tables with read lock;

mysql> flush privileges;

4、查看当前二进制日志名和偏移量值,从库按这个点开始进行数据恢复,之前的数据需要人工同步

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

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000005 |      409 | mysql         |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

5.刷新日志

mysql>flush logs;  #因为刷新日志file的位置会+1,即File变成为:mysql-bin.000006

                   (很多问题出在这一步)

6、解除读锁

mysql> unlock tables;

7、在主服务器上为从服务器创建一个用于同步的用户

mysql>grant replication slave on *.* to u01@'192.168.202.%' identified by '123456';

此种方式做同步,这一步是必须要做的或者是已经授权过的,不然下面会   报错

二、从服务器配置

 

1、编辑/etc/my.cnf文件在mysqld下添加以下字段

server-id=132         #从服务器标识

log-bin=mysql-bin   #与主服务器一致

replicate-do-db=mysql  #同步的数据库

relay-log=relay_log    #

2、保存并重启mysql服务

3、[root@localhost ~]# mysql -uroot -p123456

mysql>slave stop;#停止slave同步进程

#执行同步语句

mysql>  change master to master_host='192.168.202.131',

    ->     -> master_user='root',

    ->     -> master_password='123456',

->     -> master_log_file='mysql-bin.000006',

#保持与主服务信息一致(因为在主服务器上已经刷新,所以file位置要加1)

->     -> master_log_pos=409;   #保持主服务信息一致

mysql> start slave  #开启slave同步进程

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

以上这两个参数的值为Yes,即说明配置成功!

三、  验证测试

1、在主库中新增一张表,添加测试数据

2、查看从库中是否完成同步

四:报错信息整改;

1、

Got fatal error 1236 from master when reading data from binary log: 'Client requested

master to start replication from impossible position'

主从的log-pos没有正确配好

2、

error reconnecting to master 'root@192.168.202.131:3306' - retry-time: 60

连不通主机,确认是否有sql服务或者是否关闭防火墙

3、

启动从时报错:

mysql> start slave;

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

      原因:日志认证有问题

       执行:mysql> reset slave,然后重新把以上sql语句写上去

五、

1、主从同步,经测试,是单向的,只有master数据库里面的东西能同步到slave,反之则不行

2.master重启sql服务对同步无影响

3.这种方式的同步,数据库内容不一致也可进行同步

4.主机和备机重启,不影响同步

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值