mysql怎么互备
时间 : 2023-08-01 11:22:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL的互备(或者称为MySQL主从复制)是一种常见的数据库备份和冗余策略,允许数据库在多个服务器之间同步数据。当主服务器(也称为master)上的数据发生变化时,该变化会自动地被复制到一个或多个从服务器(也称为slave)上,从而实现数据的备份和冗余。当主服务器发生故障或不可用时,从服务器可以快速地接管成为主服务器的角色,确保数据库的高可用性和可恢复性。

下面是一般情况下设置MySQL主从复制的步骤:

1. 配置主服务器(master):

- 编辑MySQL配置文件my.cnf,在[mysqld]部分下添加以下配置信息:

```

server-id = 1 # 设定服务器唯一ID,可分配不同的ID给不同服务器

log_bin = /var/log/mysql/mysql-bin.log # 开启二进制日志

binlog-do-db = example_database # 需要进行复制的数据库名

binlog-ignore-db = mysql # 忽略掉不需要进行复制的数据库

```

- 重启MySQL服务器,使配置生效。

2. 创建从服务器(slave):

- 编辑MySQL配置文件my.cnf,在[mysqld]部分下添加以下配置信息:

```

server-id = 2 # 设定服务器唯一ID,需和主服务器的ID不同

relay_log = /var/log/mysql/mysql-relay-bin.log # 开启中继日志

log_bin = /var/log/mysql/mysql-bin.log # 开启二进制日志

read_only = 1 # 设置为只读模式,以免在从服务器上面写入数据

```

- 重启MySQL服务器,使配置生效。

3. 在主服务器上创建用于复制的账户:

```sql

CREATE USER 'replication_user'@'slave_ip' IDENTIFIED BY 'password';

GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_ip';

FLUSH PRIVILEGES;

```

其中,`replication_user`是复制用户的账户名称,`slave_ip`是从服务器的IP地址,`password`是复制用户的密码。

4. 在从服务器上配置主从复制:

- 在从服务器上执行以下命令获取主服务器的二进制日志文件名和位置:

```sql

SHOW MASTER STATUS;

```

- 将得到的二进制日志文件名和位置填入以下命令,并执行:

```sql

CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.[数字]', MASTER_LOG_POS=[数字];

```

其中,`master_ip`是主服务器的IP地址,`replication_user`和`password`为之前在主服务器上创建的复制用户的账户及密码,`mysql-bin.[数字]`为主服务器上的二进制日志文件名,`[数字]`为主服务器上的二进制日志位置。

5. 在从服务器上启动主从复制:

```sql

START SLAVE;

```

执行以上命令后,从服务器将开始同步主服务器上的数据。

6. 检查主从复制状态:

- 在主服务器上执行以下命令:

```sql

SHOW MASTER STATUS;

```

记录下当前的二进制日志文件名和位置。

- 在从服务器上执行以下命令:

```sql

SHOW SLAVE STATUS;

```

确认Slave_IO_Running和Slave_SQL_Running两项的值是否为"Yes",以及Seconds_Behind_Master项的值是否为0。

以上是设置MySQL主从复制的一般步骤,具体的配置和配置文件路径可能会因不同的操作系统、MySQL版本以及网络环境而有所不同。在实际使用中,还需考虑到网络延迟、数据一致性、主从切换自动化等方面的问题。为了确保配置正确和高可用性,建议参考MySQL官方文档提供的详细信息。