MySQL数据库主从同步配置
注意:mysql默认配置文件,如不特殊指定默认为/etc/my.cnf
注意:mysql配置文件查找顺序:/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
一、主服务器–主库
1、创建一个复制用户,具有replication slave权限
mysql>grant replication slave on *.* to 'rep1'@192.168.0.102
mysql>flush privileges;
2、编辑配置文件
#vi /etc/my.cnf
添加如下数据
server-id=1
log-bin=/var/lib/mysql/mysql-bin #开启log-bin二进制日志文件,必须指定绝对路径,否则无法查看日志
sync_binlog=1 #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
binlog_format=mixed #binlog日志格式,mysql默认采用statement,建议使用mixed
binlog-do-db=mysql1 #需要同步的数据库名,如有多项,重复即可
log-slave-updates=1 #这个参数一定要加上,否则不会给更新的记录些到二进制文件里
slave-skip-errors=all #是跳过错误,继续执行复制操作(可选)
expire_logs_days = 7 #binlog过期清理时间
注意:开启log-bin二进制日志文件(Mysql需要有/var/lib/mysql/目录的读写权限【可通过chown -R mysql:mysql /var/lib/mysql命令进行更改】)
3、重启主数据库
#service mysqld restart
4、设置读锁
mysql>flush tables with read lock;
5、查看主分支状态–得到binlog日志文件和偏移量
mysql>show master status;

6、备份要同步的数据库
#mysqldump test >test.sql
7、解除读锁
mysql>unlock tables;
二、从服务器–从库
1、还原数据库
将master(192.168.0.101)备份的数据库数据恢复到slave从服务器(192.168.0.102)
2、编辑my.cnf配置文件
#vi /etc/my.cnf
添加如下内容
log-bin=mysql-bin
binlog_format=mixed
server-id = 2
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
expire_logs_days = 10
slow_query_log=1
slow-query-log-file=/www/server/data/mysql-slow.log
long_query_time=3
3、重启从数据库
#service mysqld restart
4、配置从数据库
1)关闭slave进程
mysql>stop slave;
2)写入主从同步配置
mysql>CHANGE MASTER TO
MASTER_HOST = '192.168.0.102',
MASTER_USER = 'rep1', #对应的mysql账号
MASTER_PASSWORD = 'passwd', #对应的mysql密码
MASTER_PORT = 3306, #对应端口号
MASTER_LOG_FILE='mysql-bin.000001', #对应主库的File参数
MASTER_LOG_POS=120, #对应主库的Position参数
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000;
3)启动slave进程
mysql>start slave;
4)查看slave状态
mysql>show slave status\G;

在这里主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
注意:如果出现Slave_IO_Running: No或Slave_SQL_Running: NO,需要重做2)和3),对从数据库进行相应设置
921

被折叠的 条评论
为什么被折叠?



