MySQL复制(Replication)工作原理:Slave端通过将Master端的binlog利用I/O线程通过网络复制到Slave端,然后再通过SQL线程解析Binlog中的日志并应用到数据库中来实现。
1)物理环境
master A 172.16.100.106
slave B 172.16.100.108
2)Maser端的配置
在主服务器上建mysql用户,使其从服务器能够远程登录主服务器
grant replication slave on *.* to'david'@'172.16.100.108'identified by 'mysql'
编辑主服务器的配置文件
/etc/my.cnf
server-id = 1
log-bin = mysql-bin
binlog-ignore = mysql //mysql数据库不同步
binlog-ignore-db = information_schema
binlog-do-db = firstdb //同步l数据库,默认同步所有数据库
新建同步的数据库 create database firstdb;
查看主数据库的状态
3)Slave配置
新建同步的数据库 create database firstdb; /和主数据库的数据库名称必须一致
修改mysql主配置文件 server-id = 2 并重启mysql数据库
change master to
master_host=’172.16.100.106’,
master_port=3306
master_user='david',
master_password='mysql’,
master_log_file=’mysql-bin.000014’, / master_log_file的值在master用show master status 看到的值必须一致
master_log_pos=317; / master_log_pos的值在master用show master status 看到的值必须一致
4) 验证从服务器设置是否成功,登录从服务器
mysql〉show slave status\G;
能看到 Slave_IO_Running: Yes
Slave_SQL_Running: Yes 即可
mysql主从同步常见故障问题:
1)给master授权slave主机登陆权限,在登陆的时候出错 编辑master的配置文件在[mysqld]下面添加
skip-name-resolve
2)在从服务器上面show slave status\G;出现1236错误排错办法:
重启主库
给从库重新授权
执行以下命令
slave stop;
reset slave;
slave start;