在Ubuntu上搭建MySQL主从复制是一个常见的任务,用于提高数据库的性能和可靠性。以下是详细步骤和相关概念:
主从复制(Master-Slave Replication):
在主服务器和从服务器上安装MySQL:
sudo apt update
sudo apt install mysql-server
编辑MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf
:
[mysqld]
server-id=1
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=your_database_name
重启MySQL服务:
sudo systemctl restart mysql
登录MySQL并创建用于复制的用户:
mysql -u root -p
CREATE USER 'repl'@'从服务器IP' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从服务器IP';
FLUSH PRIVILEGES;
编辑MySQL配置文件 /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_do_db=your_database_name
重启MySQL服务:
sudo systemctl restart mysql
登录MySQL并设置主服务器信息:
mysql -u root -p
CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001', -- 从主服务器SHOW MASTER STATUS获取
MASTER_LOG_POS=154; -- 同上
START SLAVE;
在主服务器上执行一些写操作,然后在从服务器上检查数据是否同步:
-- 主服务器
USE your_database_name;
CREATE TABLE test (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255));
INSERT INTO test (name) VALUES ('Test User');
-- 从服务器
USE your_database_name;
SELECT * FROM test;
MASTER_LOG_FILE
和 MASTER_LOG_POS
设置正确。/var/log/mysql/error.log
文件,查找具体错误信息。pt-query-digest
等工具分析慢查询并进行优化。通过以上步骤和注意事项,你应该能够在Ubuntu上成功搭建MySQL主从复制环境。
领取专属 10元无门槛券
手把手带您无忧上云