天天看点

mysql 主备和双主模式_MySQL双主模式

双主模式

互为主从:两个节点各自都要开启binlog和relay log(1)数据不一致

(2)自动增长ID

定义一个节点使用奇数ID

auto_increment_offset=1

auto_increment_increment=2

另外一个节点使用偶数ID

auto_increment_offset=2

auto_increment_increment=2

前提:(1)server_id必须要使用不同值

(2)均启用binlog和relay log

(3)存在自动增长ID的表,为了使得ID不相冲突,需要定义其自动增长方式

(4)都授权复制权限的用户账号

(5)各把对方指定为主节点

复制时应该注意的问题:1、从服务器设定为“只读”

在从服务器启动read_only,但仅对非SUPER权限用户有效

组织所有用户:FLUSH TABLES WITH READ LOCK;

2、尽量确保复制时的事物安全

在master节点启用参数sync_binlog = ON

如果用到的是InnoDB存储引擎:

innodb_flush_logs_at_trx_commit=ON

innodb_support_xa=ON

3、从服务器意外终止时尽量避免自动复制线程

4、从节点:设置参数

sync_master_info = ON

sync_relay_log_info = ON

实战:

在node1进行如下配置

[[email protected]~]#vim /etc/my.cnf.d/server.cnf

mysql 主备和双主模式_MySQL双主模式

在node2节点进行如下配置

[[email protected]~]#vim /etc/my.cnf.d/server.cnf

mysql 主备和双主模式_MySQL双主模式

[[email protected]~]#systemctl start mariadb

[[email protected]~]#systemctl start mariadb

在node1和node2相互授权GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'joah'@'192.168.4.62' IDENTIFIED BY '123456';

GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'joah'@'192.168.4.61' IDENTIFIED BY '123456';

在node1和node2指定masterMariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.4.62',MASTER_USER='joah',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=422;

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.4.61',MASTER_USER='joah',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=245;

在node1和node2启动从服务器MariaDB [(none)]> SHOW SLAVE STATUSG;

MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD;

测试MariaDB [(none)]> SHOW SLAVE STATUSG;

mysql 主备和双主模式_MySQL双主模式

如果出现上述红框中yes字样就成功