MySQL5.6怎么实现主主同步

63次阅读
没有评论

共计 3906 个字符,预计需要花费 10 分钟才能阅读完成。

这篇文章主要介绍“MySQL5.6 怎么实现主主同步”,在日常操作中,相信很多人在 MySQL5.6 怎么实现主主同步问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL5.6 怎么实现主主同步”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

实战环境介绍:

服务器名 IP 系统 MySQL odd.example.com 192.168.1.115 rhel-5.8 5.6.24 even.example.com 192.168.1.116 rhel-5.8 5.6.24

假设要同步的库是 db_rocky

㈠ 创建同步用户

在 ODD 上

mysql grant replication slave on *.* to water @ 192.168.1.116 identified by cdio2010
Query OK, 0 rows affected (0.00 sec)

mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)

在 EVEN 上

mysql grant replication slave on *.* to water @ 192.168.1.115 identified by cdio2010
Query OK, 0 rows affected (0.11 sec)

mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)

㈡ 修改 /etc/my.cnf 配置文件, 为其添加以下内容:

在 ODD 上

[mysqld]
server-id=1

binlog-do-db=db_rocky   # 需要记录进制日志的数据库.
binlog-ignore-db=mysql   # 不需要记录进制日志的数据库.
replicate-do-db=db_rocky  # 需要进行同步的数据库.
replicate-ignore-db=mysql,information_schema  # 不需要同步的数据库.
注意:如果有多个数据库可用逗号分隔, 或者使用多个 binlog-do-db、binlog-do-db、replicate-do-db、replicate-ignore-db 选项
# 同步参数:
# 保证 slave 挂在任何一台 master 上都会接收到另一个 master 的写入信息
log-slave-updates
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
slave-skip-errors=all   # 过滤掉一些没啥大问题的错误

在 EVEN 上

[mysqld]
server-id=2   #设置一个不同的 id 号
注意:在 my.cnf 里面有个默认值 1,把默认值改为其它的数字,而非新增一个 server-id
binlog-do-db=db_rocky   #需要记录二进制日志的数据库.
binlog-ignore-db=mysql     #不需要记录进制日志的数据库.
# 需要同步的数据库
replicate-do-db=db_rocky     #需要进行同步的数据库.
replicate-ignore-db=mysql,information_schema  # 不需要同步的数据库.
# 如果有多个数据库可用逗号分隔, 或者使用多个 binlog-do-db、binlog-do-db、replicate-do-db、replicate-ignore-db 选项
# 同步参数:
# 保证 slave 挂在任何一台 master 上都会接收到另一个 master 的写入信息
log-slave-updates
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
slave-skip-errors=all  # 过滤掉一些没啥大问题的错误

㈢ 分别重启服务器 ODD、EVEN 上的 mysql 服务
# server mysqld restart

㈣ 分别在服务器 ODD、EVEN 上查看做为主服务器状态

在 ODD

mysql flush tables with read lock;  #防止进入新的数据
Query OK, 0 rows affected (0.00 sec)

mysql show master status\G;
*************************** 1. row ***************************
            File: mysql-bin.000007
        Position: 438
    Binlog_Do_DB: db_rocky
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)

在 EVEN

mysql flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

mysql show master status\G;
*************************** 1. row ***************************
            File: mysql-bin.000008
        Position: 107
    Binlog_Do_DB: db_rocky
Binlog_Ignore_DB: mysql
1 row in set (0.01 sec)

㈤ 分别在服务器 ODD、EVEN 上用 change master 语句指定同步位置 : 

在 ODD

mysql change master to master_host= 192.168.1.116 ,master_user= water ,master_password= cdio2010 ,
    – master_log_file= mysql-bin.000008 ,master_log_pos=107;
Query OK, 0 rows affected (0.05 sec)

在 EVEN

mysql change master to master_host= 192.168.1.115 ,master_user= water ,master_password= cdio2010 ,
    – master_log_file= mysql-bin.000007 ,master_log_pos=438;
Query OK, 0 rows affected (0.15 sec)

注:master_log_file,master_log_pos 由上面主服务器查出的状态值中确定

master_log_file 对应 File,master_log_pos 对应 Position

在 ODD、EVEN 上执行

mysql unlock tables;
Query OK, 0 rows affected (0.00 sec)

㈥ 分别在服务器 ODD、EVEN 上启动从服务器线程

mysql start slave;
Query OK, 0 rows affected (0.00 sec)

分别在服务器 ODD、EVEN 上查看从服务器状态 :

ODD 上

mysql show slave status\G;
*************************** 1. row ***************************
主要关注以下 2 个参数:


             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

EVEN 上:

mysql show slave status\G;
*************************** 1. row ***************************
主要关注以下 2 个参数:


             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

㈦ 测试

EVEN 上

mysql show databases;
+——————–+
| Database           |
+——————–+
| information_schema |
| db_rocky          |
| mysql              |
| performance_schema |
| test               |
+——————–+
5 rows in set (0.00 sec)

mysql use db_rocky;
Database changed

mysql show tables;
Empty set (0.00 sec)

mysql create table water (id int);
Query OK, 0 rows affected (0.04 sec)

mysql insert into water values(1);
Query OK, 1 row affected (0.01 sec)

mysql commit;
Query OK, 0 rows affected (0.00 sec)

在 ODD 上

mysql show tables;
+——————–+
| Tables_in_db_rocky |
+——————–+
| t_rocky            |
| water              |
+——————–+
2 rows in set (0.00 sec)

mysql select * from water;
+——+
| id   |
+——+
|    1 |
+——+
1 row in set (0.00 sec)

到此,关于“MySQL5.6 怎么实现主主同步”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计3906字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)