数据库主从部署

一、部署Master

	1、修改/etc/my.cnf, mysqld节点增加

		## 设置server_id，一般设置为IP,注意要唯一
		server_id=125107
		## 复制过滤：也就是指定哪个数据库不用同步（mysql库一般不同步）
		binlog-ignore-db=mysql
		binlog-ignore-db=sys
		binlog-ignore-db=information_schema
		binlog-ignore-db=performance_schem
		## 开启二进制日志功能，可以随便取，最好有含义（关键就是这里了）
		log-bin=mysql-bin
		## 为每个session 分配的内存，在事务过程中用来存储二进制日志的缓存
		binlog_cache_size=16M
		## 主从复制的格式（mixed,statement,row，默认格式是statement）
		binlog_format=mixed
		## 二进制日志自动删除/过期的天数。默认值为0，表示不自动删除。
		expire_logs_days=30
		## 跳过主从复制中遇到的所有错误或指定类型的错误，避免slave端复制中断。
		## 如：1062错误是指一些主键重复，1032错误是因为主从数据库数据不一致
		slave_skip_errors=1062
		## 控制binlog的写入频率。每执行多少次事务写入一次
		## 这个参数性能消耗很大，但可减小MySQL崩溃造成的损失，为0表示不控制
		sync_binlog = 1
		innodb_flush_log_at_trx_commit = 1

	2、然后重启mysql

		service mysqld stop
		service mysqld start

	3、创建同步用户、及密码

		CREATE USER 'slave'@'%' IDENTIFIED BY 'a123456';
		GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
		FLUSH PRIVILEGES;

二、部署Slave

	1、修改/etc/my.cnf, mysqld节点增加

		## 设置server_id，一般设置为IP,注意要唯一
		server_id=125111
		## 复制过滤：也就是指定哪个数据库不用同步（mysql库一般不同步）
		binlog-ignore-db=mysql
		binlog-ignore-db=sys
		binlog-ignore-db=information_schema
		binlog-ignore-db=performance_schem
		## 开启二进制日志功能，以备Slave作为其它Slave的Master时使用
		#log-bin=mysql-slave1-bin
		## 为每个session 分配的内存，在事务过程中用来存储二进制日志的缓存
		binlog_cache_size=16M
		## 主从复制的格式（mixed,statement,row，默认格式是statement）
		binlog_format=mixed
		## 二进制日志自动删除/过期的天数。默认值为0，表示不自动删除。
		expire_logs_days=30
		## 跳过主从复制中遇到的所有错误或指定类型的错误，避免slave端复制中断。
		## 如：1062错误是指一些主键重复，1032错误是因为主从数据库数据不一致
		slave_skip_errors=1062
		## relay_log配置中继日志
		relay_log=mysql-relay-bin
		## log_slave_updates表示slave将复制事件写进自己的二进制日志
		## 主要为了作为其他的master
		#log_slave_updates=ON
		## 防止改变数据(除了特殊的线程)
		#read_only=1(为了使备机随时转正，所以这里允许写)
		## MySQL主从复制的时候，当Master和Slave之间的网络中断，但是Master和Slave无法察觉的情况下（比如防火墙或者路由问题）。Slave会等待slave_net_timeout设置的秒数后，才能认为网络出现故障，然后才会重连并且追赶这段时间主库的数据,默认60
		slave-net-timeout = 20                    
		## 如果启用，此变量将在服务器启动后立即启用自动中继日志恢复。
		relay_log_recovery = ON
		## 该变量确定从站在中继日志中的位置是写入FILE还是写入表
		relay_log_info_repository = TABLE

	2、然后重启mysql

		service mysqld stop
		service mysqld start
三、配置同步ip、账号、密码，日志文件及节点
		Master执行SQL:  show master status;
		Slave执行下列SQL: 
		---------------------------------------------------------------------------------------
		//注意语句中的master-ip、同步账号、密码、端口号、file、pos与show master status保持一致
		---------------------------------------------------------------------------------------
		change master to 
		master_host='192.168.0.253', 
		master_user='slave', 
		master_password='a123456', 
		master_port=3306, 
		master_log_file='mysql-bin.000001', 
		master_log_pos=120, 
		master_connect_retry=30,
		master_heartbeat_period=10;
		---------------------------------------------------------------------------------------
		上面执行的命令的解释：
		master_host=‘172.17.0.1’ 
		## Master的IP地址

		master_user=‘slave’ 
		## 用于同步数据的用户（在Master中授权的用户）

		master_password=‘a123456’ 
		## 同步数据用户的密码

		master_port=3306 
		## Master数据库服务的端口

		master_log_file=‘mysql-bin.000001’ 
		##指定Slave从哪个日志文件开始读复制数据（Master上执行命令的结果的File字段）

		master_log_pos=1389 
		## 从哪个POSITION号开始读（Master上执行命令的结果的Position字段）

		master_connect_retry=30 ##当重新建立主从连接时，如果连接建立失败，间隔多久后重试。单位为秒，默认设置为60秒，同步延迟调优参数
		---------------------------------------------------------------------------------------
		show slave status;
		---------------------------------------------------------------------------------------
		可看到Slave_IO_State为空， 
		Slave_IO_Running和Slave_SQL_Running是No，表明Slave还没有开始复制过程。
		相反Slave_IO_Running和Slave_SQL_Running是Yes表明已经开始工作了。
		---------------------------------------------------------------------------------------
		start slave;
		---------------------------------------------------------------------------------------

配置demo：
Master Mysqld部分
server_id=192.168.0.253
binlog-do-db=brian
binlog-ignore-db=information_schema
binlog-ignore-db=chemenu
binlog-ignore-db=kaimainiu
binlog-ignore-db=linkchem
binlog-ignore-db=linkchem_en
binlog-ignore-db=mysql             
binlog-ignore-db=performance_schema
binlog-ignore-db=spider_info
log-bin=mysql-bin
binlog_cache_size=16M
binlog_format=mixed
expire_logs_days=10
slave_skip_errors=1062
sync_binlog=1
innodb_flush_log_at_trx_commit=1

Slave Mysqld部分

server_id=192.168.0.254
binlog-do-db=brian
binlog-ignore-db=information_schema
binlog-ignore-db=chemenu
binlog-ignore-db=kaimainiu
binlog-ignore-db=linkchem
binlog-ignore-db=linkchem_en
binlog-ignore-db=mysql             
binlog-ignore-db=performance_schema
binlog-ignore-db=spider_info
binlog_cache_size=16M
binlog_format=mixed
expire_logs_days=10
slave_skip_errors=1062
relay_log=mysql-relay-bin
slave-net-timeout=60                    
relay_log_recovery=ON
relay_log_info_repository=TABLE