双主模式
互为主从:两个节点各自都要开启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
在node2节点进行如下配置
[[email protected]~]#vim /etc/my.cnf.d/server.cnf
[[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;
如果出现上述红框中yes字样就成功