Debian上的MySQL主从复制可以通过以下步骤实现:
首先,确保在主服务器和从服务器上都安装了MySQL。
sudo apt update
sudo apt install mysql-server
在主服务器上,编辑MySQL配置文件 /etc/mysql/my.cnf
或 /etc/mysql/mysql.conf.d/mysqld.cnf
,找到或添加以下配置:
[mysqld]
server-id=1
log_bin=/var/log/mysql/mysql-bin.log
binlog_format=ROW
然后,重启MySQL服务:
sudo systemctl restart mysql
确保主服务器的数据目录存在并且MySQL用户有权限访问:
sudo mkdir -p /var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 700 /var/lib/mysql
登录到MySQL并初始化主服务器:
mysql -u root -p
创建一个用于复制的用户:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
获取主服务器的二进制日志坐标:
SHOW MASTER STATUS;
记下 File
和 Position
的值。
在从服务器上,编辑MySQL配置文件 /etc/mysql/my.cnf
或 /etc/mysql/mysql.conf.d/mysqld.cnf
,找到或添加以下配置:
[mysqld]
server-id=2
relay-log=/var/log/mysql/mysql-relay-bin.log
log_bin=/var/log/mysql/mysql-bin.log
binlog_format=ROW
然后,重启MySQL服务:
sudo systemctl restart mysql
登录到MySQL并初始化从服务器:
mysql -u root -p
设置从服务器的 server-id
:
SET GLOBAL server_id=2;
配置从服务器连接到主服务器:
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='recorded_file_name',
MASTER_LOG_POS=recorded_position;
启动从服务器复制进程:
START SLAVE;
在从服务器上,检查复制状态:
SHOW SLAVE STATUS\G;
确保 Slave_IO_Running
和 Slave_SQL_Running
都是 YES
,并且 Last_IO_Error
和 Last_SQL_Error
是空的。
在主服务器上插入一些数据:
INSERT INTO test_table (name) VALUES ('test_data');
然后在从服务器上查询这些数据,确保它们已经同步:
SELECT * FROM test_table;
通过以上步骤,你应该能够在Debian上成功设置MySQL主从复制。