主从同步主要包括master和slave,实现了master和slave上数据的自动同步。
master用于接收客户端的连接。
slave自动同步数据。
主从同步的模式有四种:
1、一主一从 主<—从
2、一主多从 从—>主<—从
3、链式结构 主<—从<—从
4、互为主从 主<------>主
mysql主从同步原理:
构建思路:
Master:开启binlog日志,开启授权用户,查看binlog日志
Slave:设置server_id,确保slave和master数据一致,指定master信息,启动slave程序,查看slave状态信息。
一主一从:
主:(192.168.4.50)
1、开启binlog日志:
vim /etc/my.cnf
[mysqld]
...
log_bin #更高级的mysql版本binlog本身就是开启的,可以不用这个字段
...
2、创建授权用户:
grant replication slave on *.* slaveuser@"%" identified by "123456"
3、查看binlog日志状态:
mysql> show master status
从:(192.168.4.51)
1、配置server_id:
vim /etc/my.conf
[mysqld]
...
server_id = 51
...
2、确保salve和master数据一致:(完全备份,完全恢复)
mysqldump -uroot -p123456 --master-data test > /test_bak.sql
# 在50主机上对test数据库做完全备份,一定要加上--master-data参数
# --master-data让从服务器知道主服务器的偏移量的位置,便于同步
scp /test_bak.sql root@192.168.4.51:/ #备份数据拷贝到51主机
mysql -uroot -p123456 test < /test_bak.sql
3、指定master信息:
mysql> change master to master_host="192.168.4.50", \
master_user='slaveuser',master_password='123456', \
master_log_file='binlog.000001',master_log_pos='2566';
# 其中master_log_file指明了主机当前使用的binlog日志
# master_log_pos是主机binlog日志中当前的偏移量
可以通过以下方法查看binlog日志和偏移量:
①:在master主机上
show master status
②:在slave主机上查看数据备份文件(推荐方法)
grep master* /test_bak.sql
4、开启slave服务器:
mysql> start slave
# 开启slave服务器以后,slave服务器的/var/lib/mysql会多出四种文件
# ①:master.info 存放了master的信息
# ②:主机名-relay-bin.000001 中继日志
# ③:relay-log.info 中继日志信息
# ④:主机名-relay-bin.index 中继日志索引文件,记录了所有的中继日志
# 如果把这四种文件都删除了,那么这台数据库服务器就成为了一台独立的数据库服务器了
5、查看slave状态:
mysql> show slave status;
验证:
使用客户机连接master服务器(192.168.4.50),对test表进行插入操作
在slave服务器上(192.168.4.51)可以查看到插入的数据
一主多从:
创建一台新的机器,安装好mysql,重复在一主一从的slave的配置。
1、设置server_id,
2、确保slave和master数据一致,
3、指定master信息,
4、启动slave程序,
5、查看slave状态信息。
这里要注意binlog日志,以及binlog日志的偏移量
最好使用 grep master* /test_bak.sql查找
写总结的第三十七天!!!