MySQL主从复制是一种常用的数据库复制方案,可以实现将一个MySQL数据库的数据自动同步到其他MySQL数据库服务器上。主从复制可以提高数据库的可用性和性能,同时也可以用于备份和数据分发。
下面是搭建MySQL主从复制的步骤:
确保主从服务器的MySQL版本相同,并且主服务器上的binlog功能已经启用。可以通过修改MySQL的配置文件my.cnf来启用binlog功能。
在主服务器上创建一个用于复制的用户,并授予REPLICATION SLAVE权限。可以使用以下命令创建用户:
CREATE USER 'replication_user'@'slave_ip' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_ip';
其中,'replication_user'是复制用户的用户名,'slave_ip'是从服务器的IP地址,'password'是复制用户的密码。
在主服务器上查看并记录下当前的binlog文件名和位置。可以使用以下命令查看:
SHOW MASTER STATUS;
记录下File和Position的值,后面会在从服务器上使用。
在从服务器上修改MySQL的配置文件my.cnf,启用slave功能,并配置主服务器的信息。可以使用以下配置:
server-id = 2
relay-log = /var/lib/mysql/mysql-relay-bin
log-bin = /var/lib/mysql/mysql-bin
replicate-do-db = database_name
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
master-host = master_ip
master-user = replication_user
master-password = password
master-port = 3306
master-connect-retry = 60
其中,server-id是从服务器的唯一标识,relay-log和log-bin是用于存储从服务器的binlog文件的路径,replicate-do-db是要复制的数据库名,replicate-ignore-db是要忽略复制的数据库名,master-host是主服务器的IP地址,master-user和master-password是在主服务器上创建的复制用户的用户名和密码,master-port是主服务器的端口号,master-connect-retry是从服务器连接主服务器的重试间隔时间。
在从服务器上重启MySQL服务,使配置生效。
在从服务器上执行以下命令,将从服务器连接到主服务器并开始复制:
CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file', MASTER_LOG_POS=master_log_pos;
START SLAVE;
其中,'master_ip'是主服务器的IP地址,'replication_user'和'password'是在主服务器上创建的复制用户的用户名和密码,'master_log_file'和'master_log_pos'是在第3步中记录的主服务器的binlog文件名和位置。
在从服务器上执行以下命令,查看主从复制的状态:
SHOW SLAVE STATUS\G
如果显示Slave_IO_Running和Slave_SQL_Running都为Yes,表示主从复制已经搭建成功。
通过以上步骤,就可以搭建MySQL主从复制。主服务器上的数据更新操作会自动同步到从服务器上,从服务器可以用于读取查询操作,提高数据库的性能和可用性。同时,主从复制也可以用于备份和数据分发,可以在从服务器上进行备份和查询操作,减轻主服务器的负载。
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站