mysql主从配置
1、主机配置
在my.cnf或my.ini的mysqld段中增加如下配置
log-bin=mysql-bin
server-id=XXX ----------全局唯一
innodb_flush_log_at_trx_commit=2
sync_binlog=1000
binlog-do-db=db1
binlog-do-db=db2
2、从机配置
在my.cnf或my.ini的mysqld段中增加如下配置
server-id=2
replicate-do-db=db1
replicate-do-db=db2
3、在主机中创建备份的账户
grant replication slave on *.* to 'replication'@'%' identified by 'repl_mysql_user';
4、查看主机现在的日志文件状态
show master status \G
*************************** 1. row ***************************
File: binlog.000070
Position: 207549782
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
4、在从机中设置主机的信息
CHANGE MASTER TO
MASTER_HOST='master_host_name',
MASTER_USER='replication_user_name',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='recorded_log_file_name',
MASTER_LOG_POS=recorded_log_position;
一 参数说明
innodb_flush_log_at_trx_commit
如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.
如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。
注意:
由于进程调度策略问题,这个“每秒执行一次 flush(刷到磁盘)操作”并不是保证100%的“每秒”。
sync_binlog
sync_binlog 的默认值是0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。
当sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。