mysql 双主热备
1.A服务器上创建数据库并导入数据库
mysql> show databases;
mysql> create database cdn;
mysql> use cdn;
2.B服务器上创建数据库并导入数据库。
mysql> show databases;
mysql> create database cdn;
mysql> use cdn;
3.在A和B服务器上,增加一个用户账号(backup)作为同步用户账号.
A: mysql> Grant replication slave on *.* to backup@'10.16.0.247' identified by '1234';
B: mysql> Grant replication slave on *.* to backup@'10.16.0.246' identified by '1234';4.在B服务器上用如下命令测试backup用户能连上A服务器
5.停掉A和B服务器上的mysql服务。
6.A 服务器[root@dns /]#vi /etc/my.cnf
对文件进行编辑或修改:
server-id=1
log-bin=mysql-bin
binlog-do-db=cdn
重起数据库服务。
B 服务器
[root@dns1 /]#vi /etc/my.cnf
server-id=2
master-host=10.16.0.246
master-user=backup
master-password=1234
master-port=3306
master-connect-retry=60
replicate-do-db=cdn
7.B 服务器
[root@dns /]#vi /etc/my.cnf
对文件进行编辑或修改:
log-bin=mysql-bin
binlog-do-db=cdn
A 服务器
[root@dns1 /]#vi /etc/my.cnf
master-host=10.16.0.247
master-user=backup
master-password=1234
master-port=3306
master-connect-retry=60
replicate-do-db=cdn
8.启动A、B服务器mysql服务。
9.A上输入show master status;
mysql> show master status;
+---------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------+----------+--------------+------------------+
| mysql-bin.000008 | 106 | cdn | manual,mysql |
+-----------------+----------+--------------+------------------+
记录File 和 Position 项目的值mysql-bin.000008和106。
B上输入show master status;
mysql> show master status;
+---------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------+----------+--------------+------------------+
| mysql-bin.000008 | 106 | cdn | manual,mysql |
+-----------------+----------+--------------+------------------+
记录File 和 Position 项目的值mysql-bin.000008和106。
*两个服务器File名可以不一样,现在两边的mysql服务就不要重启了 否则File名会改变。
10.在A服务器上,停止slave的服务,并配置连接B服务器参数。
mysql> slave stop;
mysql> CHANGE MASTER TO
-> MASTER_HOST="10.16.0.247",
-> MASTER_USER="backup",
-> MASTER_PASSWORD="1234",
-> MASTER_LOG_FILE="mysql-bin.000008",
-> MASTER_LOG_POS=106;
开启slave的服务
mysql> slave start;
在B服务器上,停止slave的服务,并配置连接A服务器参数。
mysql> slave stop;
mysql> CHANGE MASTER TO
-> MASTER_HOST="10.16.0.246",
-> MASTER_USER="backup",
-> MASTER_PASSWORD="1234",
-> MASTER_LOG_FILE="mysql-bin.000008",
-> MASTER_LOG_POS=106;
开启slave的服务
mysql> slave start;
11.在A、B服务器上输入 show slave status\G 查看状态。
Slave_IO_Running: Yes 必须YES
Slave_SQL_Running: Yes 必须YES
1. Master_host 指的是 主服务器的地址。
2. Master_user 指的是主服务器上用来复制的用户。 从服务器会用此账号来登录主服务。进行复制。
3. Master_log_file 就是前面提到的, 主服务器上的日志文件名.
4. Read_Master_log_pos 就是前面提到的主服务器的日志记录位置, 从服务器根据这两个条件来选择复制的文件和位置。
5. Slave_IO_Running: 指的就是从服务器上负责读取主服务器的线程工作状态。 从服务器用这个专门的线程链接到主服务器上,并把日志拷贝回来。
6. Slave_SQL_Running: 指的就是专门执行sql的线程。 它负责把复制回来的Relaylog执行到自己的数据库中。 这两个参数必须都为Yes 才表明复制在正常工作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)