MySQL数据库主从同步配置

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;

MySQL数据库主从同步配置_第1张图片
在这里主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
注意:如果出现Slave_IO_Running: No或Slave_SQL_Running: NO,需要重做2)和3),对从数据库进行相应设置

你可能感兴趣的:(数据库,mysql,服务器)