serverid
、启用二进制日志和指定主服务器信息。MySQL从服务器配置
准备工作
在配置MySQL从服务器之前,需要确保主服务器和从服务器的MySQL版本尽量保持一致,还需要两台服务器:一台作为主服务器(IP设为192.168.1.100),另一台作为从服务器(IP设为192.168.1.130),待同步的数据库名为slaveDB。
配置主服务器
1、修改主服务器的MySQL配置文件
编辑/etc/my.cnf文件:
“`ini
serverid = 1
logbin = mysqlbin
binlogdodb = slaveDB
binlogignoredb = mysql
“`
serverid
:这是数据库ID,此ID是唯一的,主库默认为1,其他从库以此ID进行递增,ID值不能重复,否则会同步出错。
logbin
:二进制日志文件,此项为必填项,否则不能同步数据。
binlogdodb
:需要同步的数据库,如果需要同步多个数据库,则继续添加此项。
binlogignoredb
:不需要同步的数据库。
2、保存并重启MySQL服务
执行以下命令以使更改生效:
“`bash
service mysql restart
“`
3、查看同步和不同步的数据库
登录MySQL,执行以下命令:
“`sql
SHOW VARIABLES LIKE ‘server_id’;
SHOW MASTER STATUS;
“`
4、添加一个同步用户并授权
在主服务器上创建一个用于从服务器同步的用户并授权:
“`sql
CREATE USER ‘slaveUser’@’192.168.1.130’ IDENTIFIED BY ‘password’;
GRANT REPLICATION SLAVE ON *.* TO ‘slaveUser’@’192.168.1.130’;
FLUSH PRIVILEGES;
“`
5、锁表并备份数据
在导出数据时,需保证主库上锁,等从库导入并启动后解锁:
“`sql
FLUSH TABLES WITH READ LOCK;
mysqldump uroot p alldatabases > /backup/alldatabases.sql
UNLOCK TABLES;
“`
配置从服务器
1、准备从服务器
将从服务器的主数据库备份文件导入到从服务器中:
“`bash
scp /backup/alldatabases.sql root@192.168.1.130:~
“`
2、编辑从服务器的MySQL配置文件
编辑/etc/my.cnf文件:
“`ini
serverid = 2
logbin = mysqlbin
replicatedodb = slaveDB
replicateignoredb = mysql
read_only = 1
“`
serverid
:从服务器的唯一ID,不能与主服务器相同。
replicatedodb
:需要同步的数据库。
replicateignoredb
:忽略的数据库。
read_only
:将该从服务器设置为只读权限。
3、保存并重启MySQL服务
执行以下命令以使更改生效:
“`bash
service mysql restart
“`
4、设置主从同步
在从服务器上执行以下命令:
“`sql
CHANGE MASTER TO
MASTER_HOST=’192.168.1.100′,
MASTER_USER=’slaveUser’,
MASTER_PASSWORD=’password’,
MASTER_LOG_FILE=’mysqlbin.000001′,
MASTER_LOG_POS=154;
START SLAVE;
“`
5、验证主从同步状态
登录MySQL,执行以下命令检查从服务器的状态:
“`sql
SHOW SLAVE STATUSG;
“`
主要查看Slave_IO_Running
和Slave_SQL_Running
是否都为YES。
FAQs
Q1: 为什么主从服务器的版本需要尽量保持一致?
A1: 如果主从服务器的版本不一致,可能会导致兼容性问题,从而影响数据的一致性和同步的稳定性,建议保持主从服务器的MySQL版本一致。
Q2: 如何查看主从复制的状态是否正常?
A2: 可以通过在从服务器上执行SHOW SLAVE STATUSG;
命令来查看复制状态,主要关注Slave_IO_Running
和Slave_SQL_Running
两个参数是否都为YES,如果是,说明主从复制运行正常。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1101981.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复