在 RedHat Linux 下实现 MySQL 数据库镜像,通常是指设置主从复制(Master-Slave Replication),以便在一个服务器上进行写操作,同时在其他服务器上进行读操作,以下是实现步骤:
前提条件
1、两台或多台安装了 MySQL 的 RedHat Linux 服务器。
2、确保这些服务器之间网络互通。
3、MySQL 用户具有足够的权限来执行复制相关的操作。
步骤一:配置主服务器(Master)
1、编辑 MySQL 配置文件
打开my.cnf
文件(通常位于/etc/my.cnf
或/etc/mysql/my.cnf
)。
sudo vi /etc/my.cnf
添加以下内容:
[mysqld] server-id = 1 log-bin = mysql-bin binlog-do-db = your_database_name # 可选,指定要复制的数据库
保存并退出编辑器。
2、重启 MySQL 服务
sudo systemctl restart mysqld
3、创建复制用户
登录到 MySQL:
mysql -u root -p
创建一个用于复制的用户:
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES;
4、获取二进制日志文件名和位置
SHOW MASTER STATUS;
记下File
和Position
的值,
+------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 154 | your_database_name | | | +------------------+----------+--------------+------------------+-------------------+
步骤二:配置从服务器(Slave)
1、编辑 MySQL 配置文件
打开my.cnf
文件(通常位于/etc/my.cnf
或/etc/mysql/my.cnf
)。
sudo vi /etc/my.cnf
添加以下内容:
[mysqld] server-id = 2 relay-log = mysql-relay-bin
保存并退出编辑器。
2、重启 MySQL 服务
sudo systemctl restart mysqld
3、配置从服务器连接到主服务器
登录到 MySQL:
mysql -u root -p
配置从服务器:
CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replica_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
4、启动从服务器的复制进程
START SLAVE;
5、检查从服务器状态
SHOW SLAVE STATUS\G;
确保Slave_IO_Running
和Slave_SQL_Running
都是Yes
,如果有错误信息,请根据提示进行排查。
验证复制是否成功
1、在主服务器上创建一个测试表并插入数据
USE your_database_name; CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(50)); INSERT INTO test_table (id, name) VALUES (1, 'Test');
2、在从服务器上查询该表
USE your_database_name; SELECT * FROM test_table;
如果从服务器能够查询到刚才在主服务器上插入的数据,说明复制配置成功。
通过以上步骤,你就能在 RedHat Linux 下实现 MySQL 数据库的主从复制,从而实现读写分离和负载均衡。