在Linux环境下,使用MySQL复制数据库可以通过以下步骤实现:
安装MySQL:确保两台Linux服务器上都安装了MySQL。
配置主服务器:编辑MySQL配置文件/etc/my.cnf
(或/etc/mysql/my.cnf
),在[mysqld]
部分添加以下内容:
server-id=1
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=your_database_name # 复制特定数据库
这里server-id
是服务器的唯一标识,log_bin
指定了二进制日志的文件路径,binlog_do_db
指定了要复制的数据库。
创建复制用户:在主服务器上创建一个用于复制的MySQL用户,并授权:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
这里的repl
是复制用户的用户名,password
是密码。
获取主服务器的二进制日志坐标:在主服务器上执行以下命令,获取当前的二进制日志坐标(文件名和位置):
SHOW MASTER STATUS;
记下返回的File
和Position
值,这些值将用于配置从服务器。
配置从服务器:编辑从服务器的MySQL配置文件/etc/my.cnf
(或/etc/mysql/my.cnf
),在[mysqld]
部分添加以下内容:
server-id=2
relay_log=/var/log/mysql/mysql-relay-bin.log
log_slave_updates=1
read_only=1
这里server-id
是服务器的唯一标识,relay_log
指定了中继日志的文件路径,log_slave_updates
启用从服务器的中继日志功能,read_only
将复制连接设置为只读。
启动从服务器:在从服务器上启动MySQL服务:
sudo systemctl start mysql
配置从服务器连接主服务器:在从服务器上执行以下命令,配置从服务器连接到主服务器进行复制:
CHANGE MASTER TO
MASTER_HOST='master_server_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='recorded_file_name', # 主服务器二进制日志文件名
MASTER_LOG_POS=recorded_position; # 主服务器二进制日志位置
START SLAVE;
这里的master_server_ip
是主服务器的IP地址,recorded_file_name
和recorded_position
是在步骤4中获取的主服务器的二进制日志坐标。
验证复制状态:在从服务器上执行以下命令,查看复制状态:
SHOW SLAVE STATUS\G;
如果一切正常,你应该能看到Slave_IO_Running
和Slave_SQL_Running
的值都是Yes
,表示复制正在正常运行。
请注意,以上步骤假设你已经有了主服务器和从服务器的IP地址,并且两台服务器上的MySQL版本兼容。在实际应用中,你可能需要根据具体情况进行调整。