在Ubuntu上实现MySQL的复制功能,通常是指设置一个MySQL主服务器(Master)和一个或多个MySQL从服务器(Slave)。以下是基本的步骤来实现MySQL的主从复制:
准备工作:
配置主服务器:
/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/my.cnf)。[mysqld]部分添加以下配置:server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = mydb # 替换为你想要复制的数据库名称
sudo systemctl restart mysql
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password'; # 替换'password'为实际的密码
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
配置从服务器:
server-id,但要确保它是唯一的。server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
replicate_do_db = mydb # 替换为你想要复制的数据库名称
read_only = 1
sudo systemctl restart mysql
CHANGE MASTER TO
MASTER_HOST='master_ip', # 替换为主服务器的IP地址
MASTER_USER='replicator',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001', # 使用实际的文件名
MASTER_LOG_POS=123; # 使用实际的二进制日志位置
START SLAVE;
SHOW SLAVE STATUS\G
确保Slave_IO_Running和Slave_SQL_Running两个状态都是Yes。测试复制:
请注意,这只是一个基本的复制设置指南。在生产环境中,你可能需要考虑更多的因素,比如安全性(使用SSL连接)、复制类型(异步、半同步等)、故障转移和数据一致性检查等。此外,MySQL 8.0引入了全局事务ID和更复杂的复制过滤选项,这些也可以根据需要进行配置。