MySQL主从复制

关于主从复制

  • 主要用途:实现读写分离,主写从读,即主服务器用于写操作,其他从服务器用于读操作。
  • 注意事项:配置之前各服务器数据库信息必须一致,否则会失败。

原理

  1. master将事件记录于二进制文件中
  2. slave启动I/O线程监控master二进制文件,有改动则写入中继日志
  3. slave将中继日志事件写入数据库中,实现同步

如下图:

配置

这里不再赘述数据库的搭建与基础配置过程
注意搭建之前数据库信息必须一致,特别是各服务器存在不一样的数据库

环境:

CentOS7 + Mariadb

master:
vim /etc/my.cnf
	[mysqld]
		log-bin=mysql-bin		#开启二进制日志
		server-id=1				#设置server-id
systemctl restart mariadb
mysql -u root -p
	CREATE USER 'slave1'@'192.168.191.129' IDENTIFIED BY 'slave1';		#创建用户,从服务器通过此账号进行登录同步
	GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.191.129';		#分配权限
	flush privileges;		#刷新权限
	SHOW MASTER STATUS;		#查看master状态
slave:
vim /etc/my.cnf
	[mysqld]
		server-id=2		#设置server-id,必须唯一
systemctl restart mariadb
mysql -u root -p
	CHANGE MASTER TO 
		MASTER_HOST='192.168.191.128',			#master的ip
		MASTER_USER='slave1',
		MASTER_PASSWORD='slave1',	
		MASTER_LOG_FILE='mysql-bin.000003',		#master状态中查看(SHOW MASTER STATUS;)
		MASTER_LOG_POS=73;						#master状态中查看(SHOW MASTER STATUS;)
	start slave;			#开启slave进程
	show slave status\G;	#查看slave状态(I/O进程和SQL进程都为YES则成功)
补充
#指定数据库同步
vim /etc/my.cnf
	[mysqld]
		#不同步这些数据库
			binlog-ignore-db = mysql  
			binlog-ignore-db = test
		#或者只同步这些数据库
			binlog-do-db = game
posted @ 2019-04-08 13:53  NetRookieX  阅读(8)  评论(0编辑  收藏  举报