主从、级联、主主、半同步、加密复制中的主、从、中间节点命令、选项总结
1) 主节点
[mysqld]
server_id=121 #唯一
binlog_format=row #建议添加
log_bin=/data/logbin/mariadb-bin #建议指定二进制日志路径,防止库与日志同时损坏,注意目录权限
innodb_file_per_table #建议表结构与数据库分开
skip_name_resolve = on #禁止主机名解析
auto_increment_offset=1 #起始位置,主主复制(主节点1)使用
auto_increment_increment=2 #步进值,主主复制(主节点1)使用
auto_increment_offset=2 #起始位置,主主复制(主节点2)使用
auto_increment_increment=2 #步进值,主主复制(主节点2)使用
sync_binlog=0 #每次写立即同步二进制日志到磁盘,默认为1,关闭后,提升性能
如果用到的为InnoDB存储引擎:
innodb_flush_log_at_trx_commit=2 #每次事务提交立即同步日志写磁盘(默认为1,建议改成2)
sync_master_info=# #次事件后master.info同步到磁盘(关系不大)
rpl_semi_sync_master_enabled=1; #启动半同步复制功能
rpl_semi_sync_master_timeout = 1000;超时长为1s
加密通讯相关:
ssl-ca=/etc/my.cnf.d/ssl/cacert.pem #指定CA自签名证书路径
ssl-cert=/etc/my.cnf.d/ssl/master.crt #指定master节点证书路径
ssl-key=/etc/my.cnf.d/ssl/master.key #指定master节点私钥路径
2) 中间节点
[mysqld]
server_id=47 #唯一
binlog_format=row #建议添加
log_bin=/data/logbin/mariadb-bin #建议指定二进制日志路径,防止库与日志同时损坏,注意目录权限
innodb_file_per_table #建议表结构与数据库分开
skip_name_resolve = on #禁止主机名解析
log_slave_updates #中间节点必须增加,否则主节点同步过来的二进制日志不写入二进制日志
3) 从节点
[mysqld]
server_id=120 #唯一
read_only #建议添加,防止写操作
innodb_file_per_table #建议表结构与数据库分开
skip_name_resolve = on #禁止主机名解析
skip_slave_start=ON #不自动启动slave(默认为off,即重启时会自动启动从节点的2个线程)
sync_relay_log=# ##次写后同步relay log到磁盘(默认为0)
sync_relay_log_info=# #次事务后同步relay-log.info到磁盘(默认为0)
复制过滤器相关:
rpl_semi_sync_master_enabled=1; #启动半同步复制功能
replicate_do_db= 指定复制库的白名单
replicate_ignore_db= 指定复制库黑名单
replicate_do_table= 指定复制表的白名单
replicate_ignore_table= 指定复制表的黑名单
replicate_wild_do_table= foo%.bar% 支持通配符
加密通讯相关:
ssl-ca=/etc/my.cnf.d/ssl/cacert.pem #指定CA自签名证书路径
ssl-cert=/etc/my.cnf.d/ssl/slave.crt #指定slave节点证书路径
ssl-key=/etc/my.cnf.d/ssl/ slave.key #指定slave节点私钥路径
4) 其它命令选项
mysql>set global sql_slave_skip_counter = #; #从服务器忽略几个主服务器的复制事件
mysql> FLUSH TABLES WITH READ LOCK; #阻止所有用户, 包括主服务器复制的更新,不要使用
mysql>reset slave;
在从服务器清除master.info,relay-log.info, relay log,开始新的relay log ,注意:需要先stop slave;
mysql>reset slave all;
清除所有从服务器上设置的主服务器同步信息如:PORT, HOST, USER和 PASSWORD 等。
grant replication slave on *.* to repluser@'192.168.36.%' identified by '123456'; #创建复制用户
CHANGE MASTER TO
MASTER_HOST='192.168.36.121',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mariadb-bin.000014',
MASTER_LOG_POS=245;
MASTER_SSL=1; #启用加密用户(使用加密通讯时需要添加此内容)
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; #主节点安装半同步插件
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; #从节点安装半同步插件
创建必须使用加密通讯的帐户
grant replication slave on *.* to repluser2@'192.168.36.%' identified by '123456' require ssl;