数据复制是跨多个服务器复制数据以提高数据可用性并增强应用程序的可靠性和性能的过程。在MySQL数据库复制中,数据从数据库从主服务器实时复制到其节点(从服务器),以确保数据的一致性,并提供备份和冗余服务。
在本文中,小编将主要演示如何在基于RHEL的发行版(例如CentOS、Fedora、Rocky Linux和AlmaLinux)中设置MySQL(主从)复制方法。
MySQL复制设置实例
这里设置的主从数据库服务器如下:
MySQL Master(主MySQL服务器) - 10.128.0.14 MySQL Slave(从MySQL服务器) - 10.128.15.211
步骤一、在主从服务器上安装MySQL数据库
首先需要在主服务器和从服务器上安装MySQL数据库。
$ sudo dnf install @mysql
安装完成后,确定启动数据库服务器。
$ sudo systemctl start mysqld
设置系统启动或重新启动时自动启动。
$ sudo systemctl enable mysqld
此后,确认MySQL数据库服务器正在运行,如下命令:
$ sudo systemctl status mysqld
步骤二、在主从服务器上启用MySQL保护
下一步是保护主服务器和从服务器上的MySQL数据库安全,这是因为默认设置是不安全的,并且存在一些容易被黑客利用的漏洞。
因此,要强化MySQL安全,请运行以下命令:
$ sudo mysql_secure_installation
首先需要设置MySQL根密码,尽量设置复杂一些,最好是超过8个字符,混合大写、小写、特殊和数字字符。
对于剩余的提示,可以输入'Y'
以便将数据库服务器调整为系统推荐设置。
在主从节点服务器上完成MySQL的安装和安全防护后,接下来是配置主节点。
步骤三、配置主节点(服务器)MySQL
下一步是配置主节点服务器并授予从节点服务器访问它的权限。首先,需要编辑mysql-server.cnf配置文件。
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
在该[mysqld]
部分下添加以下几行。
bind-address = 10.128.0.14 server-id = 1 log_bin = mysql-bin
完成后,保存更改并退出,然后重启MySQL服务器。
$ sudo sysemctl restart mysqld
接下来,登录到MySQL。
$ sudo mysql -u root -p
执行以下命令创建一个数据库用户,该用户将用于绑定主从服务器进行复制。
mysql> CREATE USER 'replica'@'10.128.15.211' IDENTIFIED BY 'P@ssword321'; mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';
应用更改并退出MySQL服务器。
mysql> FLUSH PRIVILEGES; mysql> EXIT;
验证主站的状态。
mysql> SHOW MASTER STATUS\G
记下文件名和位置,稍后在设置从属进行复制时将需要它。在本文中,文件名 asmysql-bin.000001
和 Position 1232。
步骤4:配置从节点(服务器)
现在,回到从节点服务器,再次编辑mysql-server.cnf配置文件。
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
和之前一样,将以下这些行粘贴到该[mysqld]
部分下。更改IP地址以对应从站的 IP。此外,分配不同的server-id。在这里,我们为其分配了值2。
bind-address = 10.128.15.211 server-id = 2 log_bin = mysql-bin
保存更改并退出文件,然后重启数据库服务器。
$ sudo systemctl restart mysqld
要将从节点配置为从主节点复制,登录从节点MySQL服务器。
$ sudo mysql -u root -p
首先,停止复制线程:
mysql> STOP SLAVE;
然后执行以下命令配置从节点从主节点复制数据库:
mysql> CHANGE MASTER TO MASTER_HOST='10.128.0.14' , MASTER_USER='replica' , MASTER_PASSWORD='P@ssword321' , MASTER_LOG_FILE='mysql-bin.000001' , MASTER_LOG_POS=1232;
请注意,MASTER_LOG_FILE和MASTER_LOG_POS标志对应于步骤三结束时主节点服务器的文件和位置值。
MASTER_HOST,MASTER_USER和MASTER_PASSWORD分别对应于主IP地址,数据库复制用户以及数据库复制用户的密码。
然后启动从属复制线程:
mysql> START SLAVE;
步骤四、测试MySQL主从复制
现在,要测试主从节点之间的复制是否正常,请登录主节点MySQL数据库服务器:
$ sudo mysql -u root -p
创建一个测试数据库,本文的测试数据库称为replication_db。
mysql> CREATE DATABASE replication_db;
验证数据库是否存在
mysql> SHOW DATABASES;
现在,登录从MySQL数据库服务器并确认replication_db数据库是否存在。从下面的输出结果中,可以看到数据库已经存在,这表明已从主节点复制到从节点。
mysql> SHOW DATABASES;
总结
以上就是在RHEL、Rocky和AlmaLinux系统中设置MySQL数据库复制的实例方法,过程不算太复制,比较容易设置。
通过MySQL数据库复制功能,可以将数据库从主服务器很方便的复制到从服务器上面,仅对于个人站长而言,可以很方便的进行数据库备份和恢复。
总之,以上设置过程仅供参考,有任何问题欢迎交流讨论。