主从、级联、主主、半同步、加密复制中的主、从、中间节点命令、选项总结

 

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;