Centos7下MySQL主从复制
> 在 MySQL 中我们可以配置主从复制来备份我们的数据库。以防数据库的丢失。!(data/attachment/forum/202103/03/182205mf445c4ibit6c59a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "2082709113.png")
### 环境说明
* 主服务器: 阿里云( `*.*.*.110`)
* 从服务器: 腾讯云( `*.*.*.190`)
* 系统环境:`centos7` `mysql5.6`
* 在防火墙和安全组中分别开启 `3306` 端口
### 配置主服务器
登录主数据库,创建 `db` 数据库
```
mysql -u root -p
create DATABASE db;
```
然后编辑主数据库的 `my.ini` 文件
在 `` 节点中增加如下内容:
```
#指定唯一的ID,1至32,必须的
server-id=1
#指定二进制日志存放路径,必须的
log-bin=mysql-log-bin
#指定要同步的数据库,必须的
binlog-do-db=db
```
![主配置文件](https://blog.bbskali.cn/usr/uploads/2021/03/3536302461.jpg)
### 添加远程登录账号
```
GRANT ALL PRIVILEGES ON *.* TO priess@'%' IDENTIFIED BY '12345678@';
flush privileges;
```
需要注意的是一定要在安全组和防火墙中开启 3306 端口,否则从服务器可能无法连接。
** 查看主服务器的状态信息,并且找到 File 和 Position 的值记录下来**
```
show master status;
```
记录这两个值,后面要用到。
![](https://blog.bbskali.cn/usr/uploads/2021/03/213283516.jpg)
### 配置从服务器
在从数据库中创建新的数据库 `db`。
然后编辑从数据库的 `my.ini` 文件
在节点中增加如下内容:
```
#指定唯一的ID,2至32,必须的,并且不能跟主数据库一样
server-id=2
#指定要同步的数据库,必须的
replicate-do-db=db
```
![](https://blog.bbskali.cn/usr/uploads/2021/03/3864645517.jpg)
### 设置登录主数据库的账号和密码等信息
```
change master to master_host='主ip',master_user='priess',master_password='12345678@', master_log_file='mysql-bin.000078',master_log_pos=120;
start slave;
```
**参数说明:**
`host`: 主服务器的 IP 地址
`master_user:` 上面配置的用于复制的账号
`master_password:` 账号密码
`master_log_file:` 填写 show master status 命令得到的值
`master_log_pos:` 同上
### 检测
在从数据库中执行
```
show slave status \G;
```
如果出现: Slave_IO_Running: YesSlave_SQL_Running: Yes 以上两项都为 `Yes`,那说明没问题了
![](https://blog.bbskali.cn/usr/uploads/2021/03/2806010949.jpg)
### 验证
我么在主服务器数据库 `db` 中,创建表并插入数据!
```
mysql> INSERT INTO bbskali
-> (title, author, date)
-> VALUES
-> ( "kali论坛", "大表哥牛逼", NOW());
```
![](https://blog.bbskali.cn/usr/uploads/2021/03/75968341.jpg)
而此时,在从服务器中已同步更新!
![](https://blog.bbskali.cn/usr/uploads/2021/03/855517179.jpg)
### 填个坑
Slave_IO_Running 问题 一般是账号和 File 和 Position 的值发生了变动。
YesSlave_SQL_Running: 问题 检查两个数据库的表结构是否一致
学习了!下来试试! 学习了,谢谢分享!
页:
[1]