首先,大家需要在主服务器和从服务器上安装MySQL,并确保它们之间可以互相访问。然后,大家需要在主服务器上创建一个MySQL用户,并授予它可以从任何IP地址访问主服务器的权限。例如:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
接下来,在主服务器上启用二进制日志(binary log),并为每个日志文件生成一些唯一的标识符,例如:
server-id = 1 log-bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M
然后,在从服务器上设置它将成为主服务器的副本,并告诉它应该从哪个主服务器复制数据。例如:
server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log log_slave_updates = 1 read_only = 1 replicate-do-db = mydatabase replicate-ignore-db = mysql replicate-ignore-db = information_schema replicate-ignore-db = performance_schema master-host = 192.168.1.100 master-user = repl master-password = your_password master-port = 3306
最后,在从服务器上启动MySQL服务,并启动从服务器的复制进程,例如:
service mysql start mysql -u root -p CHANGE MASTER TO MASTER_HOST='192.168.1.100',MASTER_USER='repl', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=107; START SLAVE;
现在,大家已经完成了MySQL主从复制的设置,但是大家还需要实现自动切换。为此,大家可以使用Pacemaker和Corosync这两个开源软件来检测主服务器的状态,并在主服务器宕机时自动将从服务器提升为主服务器。例如:
pcs cluster cib mysql pcs -f mysql resource create virtual-ip ocf:heartbeat:IPaddr2 ip=192.168.1.200 cidr_netmask=24 op monitor interval=30s pcs -f mysql resource create mysql-service ocf:percona:mysql datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock pid=/var/run/mysqld/mysqld.pid user=root additional_parameters="--bind-address=0.0.0.0" binary=/usr/bin/mysqld_safe pcs -f mysql constraint colocation add mysql-service with virtual-ip INFINITY pcs -f mysql constraint order virtual-ip then mysql-service pcs cluster start mysql
这样,当主服务器宕机时,Pacemaker会自动将从服务器提升为新的主服务器,并将虚拟IP地址迁移到新的主服务器上。
总之,在MySQL生产环境中,大家应该使用主从复制来提高系统的可用性和可靠性。通过使用Pacemaker和Corosync等开源软件,大家还可以实现自动切换,以确保在主服务器宕机时,系统可以快速恢复正常运行。