mysql主主配置(Master-Master)

环境说明:

两台主,端口3306设置防火墙例外,两台MySQL安装版本相同,这里使用的是MySQL5.7.34版本。

主配置一   Master1:192.168.3.63      同步账号:tongbu63

主配置二   Master2:192.168.3.64      同步账号:tongbu64

预先处理,导出需要同步数据库数据:

 mysqldump -uroot -p761479629@Lt -B HA > HA.sql

 其中-B表示包含数据库创建语句预计其他创建语句。

主配置1:

1、修改my.cnf配置

必须配置

server-id=1

log_bin=mysql-bin-master1

可选配置(选择同步与不同步的数据库)

#选择需要同步的数据库为HA,不加以下这条默认全部数据库同步。

binlog-do-db=HA

#选择不同步数据库,建议设置(避免同步导致登录链接数据库账号混乱)

binlog-ignore-db=mysql

binlog_ignore_db=information_schema

2、创建主同步账户tongbu63

 grant replication slave on *.* to 'tongbu63'@'%' identified by '761479629Lt';

 flush privileges;

 提示弱密码处理方法:

set global validate_password_policy=0; 

set global validate_password_length=4;

*可选*关闭安全策略

5.7以上版本 关闭密码安全策略插件:在my.cnf添加 validate-password=off 重启mysql。

3、设置从同步参数

参考Master2的show master status的参数值填写master_log_file='mysql-bin-master2.000001'和master_log_pos=4406;

change master to master_host='192.168.3.64',master_user='tongbu64',master_password='761479629Lt',master_log_file='mysql-bin-master2.000001',master_log_pos=4406;

4、重启MySQL,查看主服务器当前二进制日志名和偏移量

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin-master1.000001 |     4406 |              |                  |                   |

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

1 row in set (0.04 sec)

5、在Master2上测试从同步账号是否能登录主Master1

mysql -utongbu63 -p761479629Lt -h 192.168.3.63

Master2前5步测试完成后才执行第六步

6、启动slave进程,查看同步状态

网上有些使用slave start; 会报错提示有语法错误,请更换使用 start slave;

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

查看同步状态:

show slave status\G;

确保这两项正常:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

7、数据库测试,写几条数据测试下,能同步就可以了

暂时关闭同步命令:

set sql-log-bin=off;

查看二进制log-bin事件

mysql> show binlog events\G

==================================================================================================

主配置2:

1、修改my.cnf配置

必须配置

server-id=2

log_bin=mysql-bin-master2

可选配置(选择同步与不同步的数据库)

binlog-do-db=HA

binlog-ignore-db=mysql

binlog_ignore_db=information_schema

2、创建主同步账户

 grant replication slave on *.* to 'tongbu64'@'%' identified by '761479629Lt';

 flush privileges;

3、设置从同步参数

参考Master1的show master status的参数值填写master_log_file='mysql-bin-master1.000001'和master_log_pos=4406;

change master to master_host='192.168.3.63',master_user='tongbu63',master_password='761479629Lt',master_log_file='mysql-bin-master1.000001',master_log_pos=4406;

4、重启MySQL,查看主服务器当前二进制日志名和偏移量

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000001 |     4406 |              |                  |                   |

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

1 row in set (0.04 sec)

5、在Master1上测试从同步账号是否能登录主Master2

mysql -utongbu64 -p761479629Lt -h 192.168.3.64

Master1前5步测试完成后才执行第六步

6、启动slave进程,查看同步状态

网上有些使用slave start; 会报错提示有语法错误,请更换使用 start slave;

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

查看同步状态:

show slave status\G;

确保这两项正常:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

7、数据库测试,写几条数据测试下,能同步就可以了

==========================================================================

同步主库已有数据到从库

主库操作:

1、停止主库的数据更新操作

mysql>flush tables with read lock;

2、新开终端,生成主数据库的备份(导出数据库)

[root@zhoujietest ~]# mysqldump -uroot -proot student > student.sql

3、将备份文件传到从库

[root@zhoujietest ~]# scp student.sql [email protected]:/root/

4、主库解锁

mysql>unlock tables;

从库操作:

1、停止从库slave

mysql>stop slave;

2、新建数据库student

mysql> create database student default charset utf8;

3、导入数据

[root@ops-dev ~]# mysql -uroot -proot student<student.sql 

4、查看从库已有该数据库和数据

mysql> show databases;

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

| Database |

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

| information_schema |

|student |

| mysql |

| performance_schema |

| test |

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

==============================================================================

排错思路:

Slave_IO_Running :一个负责与主机的io通信

Slave_SQL_Running:负责自己的slave mysql进程

如果遇到主从不同步,看一下主从bin-log的位置,然后再同步。

在主服务器上看二进制日志事件列表

mysql> show binlog events \G

从服务器执行MySQL命令下:

mysql> stop slave;             #先停止slave服务

mysql> change master to master_log_file='mysql-bin-master.000001',master_log_pos=1164;

#根据上面主服务器的show master status的结果,进行从服务器的二进制数据库记录回归,达到同步的效果

排错思路:

1、二进制日志没有开启

2、IPTABLES 没有放开端口

3、对应的主机 IP地址写错了

SQL线程出错

1、主从服务器数据库结构不统一

出错后,数据少,可以手动解决创建插入,再更新slave状态。

注:如果主上误删除了。那么从上也就误删除了。  #因此主上要定期做mysqldump备份。

版权声明:
作者:WaterBear
链接:https://l-t.top/1795.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>