目录
前言
在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。
准备环境
1. 主服务器、从服务器 关闭防火墙
2. 主服务器、从服务器 安装Mysql
以下是 MySQL 5.7 版本的主从复制配置步骤
操作步骤
1. 在主库上开启二进制日志记录功能
在主库上的 `my.cnf` 配置文件中,将 `log-bin` 参数设置为二进制日志记录的文件名(例如:`log-bin=mysql-bin`),并设置 `server-id` 参数来标识主库的唯一 ID 号。例如:
```
[mysqld]
log-bin=mysql-bin
server-id=1
```
使用命令:USE mydb 进入数据库
在使用命令:select * from customer 查看数据表
vim打开Mysql主配置文件写入以下内容
命令:vim/etc/my.cnf
保存退出 并重启服务:systemctl restart mysqld
2.从服务器在从库上my.cnf开启二进制日志记录功能
```
[mysqld]
log-bin=mysql-bin
server-id=2
```
vim打开从服务器在主配置文件 /etc/my.cnf写入
命令:vim/etc/my.cnf
保存退出 并重启服务:systemctl restart mysqld
3. 在主库上创建一个用于从库访问的备份用户
在主库上创建一个用于从库访问的备份用户,并授予其 `REPLICATION SLAVE` 权限:
```
CREATE USER 'backup'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%';
```
其中 `backup` 是备份用户的用户名,`password` 是该用户的密码。`'%'` 表示该用户可以从任意远程地址访问主库,具体可以根据实际需求修改
Mysql -u root -p123..coM 进入Mysql 进行创建
4. 在主库上获取二进制日志文件和位置信息
在主库上获取当前正在写入的二进制日志文件名和位置信息:
```
SHOW MASTER STATUS;
```
该命令的输出结果包含主库当前正在写入的二进制日志文件名 `File` 和位置 `Position`。将这两个值记录下来,后面将用到。
5. 在从库上添加主库信息
在从库上执行以下命令,添加主库的连接信息。其中 `master-host` 是主库的 IP 或主机名,`master-user` 和 `master-password` 是步骤 2 中创建的备份用户的用户名和密码,`master-log-file` 和 `master-log-pos` 是步骤 3 中获取的二进制日志文件名和位置信息:
```
CHANGE MASTER TO
MASTER_HOST='master-host', (IP地址)
MASTER_USER='backup', (用户名)
MASTER_PASSWORD='password', (密码)
MASTER_LOG_FILE='master-log-file', (名字)
MASTER_LOG_POS=master-log-pos; (位置)
```
案例:
CHANGE MASTER TO
MASTER_HOST='192.168.1.121',
MASTER_USER='cjf1',
MASTER_PASSWORD='123..coM',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=603;
其中 `master-host`, `master-user`, `master-password`, `master-log-file`, `master-log-pos` 分别替换为实际的值。
进入从服务器 使用root用户打开Mysql
命令 Mysql -u root -p123..coM
6. 启动从库的复制进程
在从库上执行以下命令,启动从库的复制进程:
```
START SLAVE;
```
此时,从库将开始连接主库,并复制主库上的数据。当主从同步顺利进行时,执行以下命令可查看主从复制状态:
```
SHOW SLAVE STATUS\G;
```
在输出结果中,可以查看到是否连接到主库、当前正在复制的二进制日志文件名和位置、复制延迟等信息。
需要注意的是,在进行 MySQL 主从复制的操作时,我们应该保持不断地监控和维护主从库之间的数据同步,及时发现和处理异常情况,从而确保数据库系统的高可用性和稳定性。
使用 show databases 查看 主服务器数据库此刻的数据表
使用 show databases 查看 从服务器数据库此刻的数据表
在主服务器上使用命令:create database aaa; 创建aaa数据表
使用root用户在从服务器打开mysql
命令:mysql -u root -p123..coM
再打开从服务器使用命令:show databases 查看
此时就看到了主服务器创建的aaa数据表
这就完成了主从服务器复制配置
可能出现的问题及解决
mysql> start slave;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
mysql> reset slave;
Query OK, 0 rows affected (0.10 sec)
mysql> start slave;
Query OK, 0 rows affected (0.10 sec)