在Ubuntu上实现MySQL的读写分离,通常需要以下几个步骤:
安装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 = your_database_name
sudo systemctl restart mysql
配置从服务器:
/etc/mysql/mysql.conf.d/mysqld.cnf
(或/etc/my.cnf
)文件,添加以下配置:[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
replicate_do_db = your_database_name
sudo systemctl restart mysql
设置主从复制:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
File
和Position
的值。CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replicator',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='recorded_log_file_name',
MASTER_LOG_POS=recorded_log_position;
START SLAVE;
验证复制状态:
SHOW SLAVE STATUS\G
Slave_IO_Running
和Slave_SQL_Running
都是Yes
。配置读写分离:
ProxySQL
或HAProxy
来实现读写分离。ProxySQL
:sudo apt-get install proxysql
/etc/proxysql.cnf
文件,配置主从服务器和读写分离规则:[mysql_servers]
master = host:master_ip port:3306
slave = host:slave_ip port:3306
[mysql_query_rules]
rule1 = id=1,active=1,match=^SELECT.*,destination=slave
rule2 = id=2,active=1,match=^INSERT|UPDATE|DELETE.*,destination=master
ProxySQL
:sudo systemctl start proxysql
测试读写分离:
ProxySQL
连接到MySQL,执行读写操作,验证读操作是否路由到从服务器,写操作是否路由到主服务器。通过以上步骤,你可以在Ubuntu上实现MySQL的读写分离。请根据实际情况调整配置文件和命令。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: mount ubuntu后如何更新系统