详细的搭建mysql主从复制
2021/7/11 19:09:28
本文主要是介绍详细的搭建mysql主从复制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 1. master配置
- 1.1 配置文件设置
- 1.2 重启mysql使得配置生效
- 1.3 master上创建用于复制的账号
- 1.4 记录master上binlog的位置
- 1.5 备份master上的数据
- 1.6 将master上备份文件同步到slave机器上
- 2. slave配置
- 2.1 配置配置文件
- 2.2 重新启动服务器
- 2.3 导入之前备份的文件
- 2.4 建立从库与主库之间通信
- 2.5 查看备份状态
- 检测主从复制是否可以同步
- 1. 在主、从数据库建立数据库
- 2. 创建测试表
- 3. 登录从服务器,观察数据表是否同步
- 总结
首先介绍一些我的基本环境信息:
系统版本:centOs
Mysql版本: 5.7.22
主库ip: 10.138.65.2
从库ip: 10.12.206.89
1. master配置
1.1 配置文件设置
在配置文件中配置如下信息,
1、配置 Master 以使用基于二进制日志文件位置的复制
2、必须启用二进制日志记录并建立唯一的服务器ID,否则则无法进行主从复制。
3、设置 binlog 文件的格式
vim /etc/my.cnf
bind_address = 0.0.0.0 # 允许所有机器远程连接 # binlog配置 log_bin = /home/local/mysql/mysql-bin.log # 必须设置唯一的server-id server-id = 1 binlog_format = ROW
1.2 重启mysql使得配置生效
service mysql restart
1.3 master上创建用于复制的账号
首先以root账号登录主机mysql
mysql -h -uroot -p
在主库创建从库的账号及密码,并且使得从库可以连接,通过需要给账号授予复制权限,可以选择为每个从库创建不同的帐户,或者每个从库使用相同帐户连接到主库。
这里我给从库ip创建了 repl
账号,并且赋予了 复制权限。
# 创建复制账号 CREATE USER 'repl'@'10.12.206.89' IDENTIFIED BY 'slavepass'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.12.206.89';
1.4 记录master上binlog的位置
在主机中执行,该信息主要是用于slave上配置从哪个位置开始复制
mysql> show master status; -- 结果如下 +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000012 | 1176 | | | | +------------------+----------+--------------+------------------+-------------------+
1.5 备份master上的数据
将主机上所有数据库文件被分到 dbdump.sql文件中,主要是用于恢复文件。
mysqldump -u root -p --all-databases --master-data > dbdump.sql
1.6 将master上备份文件同步到slave机器上
scp dbdump.sql 10.12.206.89:/tmp
2. slave配置
2.1 配置配置文件
同样在 /etc/my.cnf 下配置如下配置,主要是设置从服务器监听的ip地址,设置server-id,注意这个id必须与主机的id不一样。
通过是要开启binlog配置,并且设置binlog的文件格式及文件路径
# bin log 配置 bind-address = 10.12.206.89 log_bin = /home/work/local/mysql/mysql-bin.log server-id = 2 binlog_format = ROW
2.2 重新启动服务器
service mysql restart
2.3 导入之前备份的文件
当然这一步也不是必须的,可以备份,也可以不用备份。
mysql -u root -p < /tmp/dbdump.sql
2.4 建立从库与主库之间通信
1、首先以 root 用户登录mysql服务器
mysql -u root -p
2、暂停备份
stop salve;
3、创建从库与主库之间通信
主要配置如下信息:主库id、端口、备份账号、密码、主库的开始bin-log文件
CHANGE MASTER TO MASTER_HOST='10.138.65.2', MASTER_PORT=8306, MASTER_USER='repl', MASTER_PASSWORD='slavepass', MASTER_LOG_FILE='mysql-bin.000012', MASTER_LOG_POS=1176;
4、开始备份
start slave;
2.5 查看备份状态
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.138.65.2 Master_User: repl Master_Port: 8306 Connect_Retry: 60 Master_Log_File: mysql-bin.000015 Read_Master_Log_Pos: 2698 Relay_Log_File: public-relay-bin.000012 Relay_Log_Pos: 2911 Relay_Master_Log_File: mysql-bin.000015 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: ……………… Seconds_Behind_Master: 0 ………………
怎么看备份是否建立成功呢?
其实主要看三个地方
1、Slave_IO_Running:读取主程序二进制日志的I/O线程是否正在运行【如果是yes表示建立成功】
2、Slave_SQL_Running:执行读取主服务器中二进制日志事件的SQL线程是否正在运行【如果是yes表示建立成功】
3、Seconds_Behind_Master:0 【表示无延迟,如果是null,则一般未建立】
检测主从复制是否可以同步
1. 在主、从数据库建立数据库
登录主服务器,创建一个用于测试的数据库,比如
mysql> CREATE DATABASE `test`; mysql> use test
2. 创建测试表
创建一个用于测试的数据库
CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(64) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
3. 登录从服务器,观察数据表是否同步
mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | user | +----------------+ 1 row in set (0.00 sec)
总结
到这里,主从服务器搭建成功了,如果大家测试中遇到什么问题,不要担心,只需要查询资料即可,一般问题之前的人都踩过坑的。
这篇关于详细的搭建mysql主从复制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:新手必读指南
- 2024-11-20部署MySQL集群教程:初学者指南
- 2024-11-20部署MySQL集群项目实战:新手教程
- 2024-11-20部署MySQL集群资料:新手入门教程
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程