【Mysql数据库】如何配置实现mysql主从复制

原文作者:我辈李想
版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。


文章目录

  • 前言
  • 一、注意事项
  • 二、主服务器配置
    • 1.在主服务器上创建一个专门用于复制的MySQL用户,并授予REPLICATION SLAVE权限。
    • 2.在主服务器上修改my.cnf配置文件,启用二进制日志,并设置一个唯一的服务器ID。例如:
    • 3.重启主服务器以应用新配置,并记录当前二进制日志文件名和位置。
    • 4.在主数据库上执行一个备份
  • 三、从服务器配置(Slave)
    • 5.在从服务器上修改my.cnf配置文件,设置server-id
    • 5.确保从服务器与主服务器相同的数据库
    • 6.设置从服务器链接主服务器的数据
    • 7.在从服务器上启动从服务器复制
    • 8.检查从服务器状态以确保从服务器与主服务器的通信正常
  • 四、配置确认
    • 1.在主服务器上查看主从复制状态
    • 2.在从服务器上查看主从复制状态
  • 五、好处和缺陷
    • 1.主从复制的好处
    • 2.主从复制的缺陷


前言

MySQL 主从复制是指将一个 MySQL 数据库的更改同步到其他 MySQL 数据库的过程。其中,一个 MySQL 数据库作为主库(master),其余的 MySQL 数据库作为从库(slave)。MySQL主从复制是一种数据备份和高可用性解决方案。它通过自动复制主数据库的更改,将数据传递到一个或多个从属数据库,以创建多个数据库副本。这样可以提高数据可靠性,避免单点故障,提高系统的可用性和性能。

配置主从复制需要完成2个工作,第一就是存量数据同步,第二就是增量数据同步。具体配置过程中会将2项工作一起配置。


一、注意事项

主从数据库在同一个局域网内,可以互相访问。

主从数据库的MySQL版本必须相同。

主从数据库的建表语句必须一致。

主从数据库必须使用相同的字符集。

主库的数据更新会实时同步到从库中,如果从库中有数据修改,可能会影响主库中的数据完整性和一致性。

不要在主服务器上执行更新,否则将破坏副本。

不要在从服务器上执行写操作,否则将破坏复制。

二、主服务器配置

1.在主服务器上创建一个专门用于复制的MySQL用户,并授予REPLICATION SLAVE权限。

mysql> CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';

2.在主服务器上修改my.cnf配置文件,启用二进制日志,并设置一个唯一的服务器ID。例如:

vi /etc/my.cnf
# 在[mysqld]段中添加如下内容
[mysqld]
server-id = 1 
log_bin = log-bin # log-bin一般为 /var/log/mysql/mysql-bin.log 
#设置不要复制的数据库
binlog-ignore-db=mysql
#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字

其中,log-bin参数用于启用二进制日志,并设置二进制日志文件名为mysql-bin;server-id参数用于设定主服务器的唯一标识符,可以是任何整数。

3.重启主服务器以应用新配置,并记录当前二进制日志文件名和位置。

可以使用以下命令查看当前的二进制日志状态:

mysql> SHOW MASTER STATUS\G;

输出类似以下内容:

*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 107
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

其中,File和Position字段表示当前二进制日志文件名和位置,需要记录下来以备用。

4.在主数据库上执行一个备份

在主服务器上执行FLUSH TABLES WITH READ LOCK命令,以确保主服务器当前没有任何活动的事务。
mysql> FLUSH TABLES WITH READ LOCK;

shell> mysqldump -u root -p --all-databases --master-data > dumpfile.sql
# 指定数据库
shell> mysqldump -u root -p  --databases database_name > database_name.sql

三、从服务器配置(Slave)

5.在从服务器上修改my.cnf配置文件,设置server-id

在my.cnf中添加以下行:

[mysqld]
server-id = 2

其中,server-id参数用于设定从服务器的唯一标识符。

5.确保从服务器与主服务器相同的数据库

将主数据库的备份文件导入从数据库

shell> mysql -u root -p database_name < database_name.sql

6.设置从服务器链接主服务器的数据

shell> mysql -u root -p
mysql> STOP SLAVE;
mysql> CHANGE MASTER TO 
MASTER_HOST = 'master_host_name',
MASTER_USER = 'replication_user',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE = 'mysql-bin.000001',
MASTER_LOG_POS = 107;

其中,MASTER_HOST参数为主服务器的主机名或 IP 地址,MASTER_USER和MASTER_PASSWORD参数为在主服务器上创建的数据库用户的用户名和密码,MASTER_LOG_FILE和MASTER_LOG_POS参数为记录的主服务器的二进制日志文件名和位置。

7.在从服务器上启动从服务器复制

mysql> START SLAVE;

8.检查从服务器状态以确保从服务器与主服务器的通信正常

mysql> SHOW SLAVE STATUS \G

确认Slave_IO_Running和Slave_SQL_Running值为YES,则表示从服务器与主服务器的通信正常。

四、配置确认

1.在主服务器上查看主从复制状态

mysql> SHOW MASTER STATUS;

2.在从服务器上查看主从复制状态

mysql> SHOW SLAVE STATUS\G;

如果复制状态为 Yes,那么主从复制就配置成功了。当然,可能还需要进行其他的配置,比如网络安全、防火墙等,以确保主服务器和从服务器之间的通信正常。

五、好处和缺陷

1.主从复制的好处

数据备份和灾难恢复:在从服务器上备份数据,以保证主服务器出现故障时能快速恢复数据;
负载均衡:可以将读操作分布到多个从服务器上,实现读写分离,从而减轻主服务器的负载;
高可用性:如果主服务器出现故障,可以将从服务器提升为主服务器,从而保证系统的高可用性。
数据分析:可以将复制的数据用于报告和分析。

2.主从复制的缺陷

虽然主从复制可以实现数据的备份和负载均衡等功能,但也存在一些限制和缺陷。例如,主从复制无法实现实时同步;从服务器上的数据可能存在延迟;主服务器出现故障时需要手动切换等。

以上是 MySQL 主从复制的基本配置步骤。完成这些步骤后,您可以使用主服务器更新数据库,并从从服务器上检索更新后的数据。

你可能感兴趣的:(Django开始入门,数据库,mysql,java)