0
点赞
收藏
分享

微信扫一扫

mysql主从复制实践

他说Python 2022-06-29 阅读 56

mysql复制原理,推荐一本书《高清中文第三版-高性能mysql》第十章
网盘下载地址:​高清中文第三版-高性能mysql-pdf 网盘
mysql主从复制实践_服务器

现状:两个云主机,都是阿里云一
mysql主从复制实践_数据库_02
前期准备


将主服务的现有数据导入到从服务中,并确保在配置时两个库都没有任何操作


简单粗暴就是上锁

FLUSH TABLES WITH READ LOCK;

确保能相互ping通,且3306端口已经开放

主上新建一个用户,指定只能让从连接

grant replication slave on *.* to 'username'@'47.98.xx.xx' identified by 'password';

开启主服务器的 binarylog


修改主服务器的mysql配置文件

vi /etc/my.cnf

在​​[mysqld]​​下新增如下内容

log-bin = master-bin.log
binlog-format = mixed
server-id = 2
binlog-do-db=suntree_cmp_test #需要复制的数据库名称,可以有多个
relay_log=mysql-relay-bin
log-slave-updates = ON
lower_case_table_names = 1 #忽略表大小写

mysql主从复制实践_数据库_03
重启mysql服务

service mysqld restart

或者

systemctl stop mysqld.service
systemctl start mysqld.service

然后登陆主库mysql,

show master status\G

mysql主从复制实践_数据库_04
记住File和Position两项,待会儿配置从库要用到


配置从库

vi /ect/my.cnf

在​​mysqld​​下面添加

log-bin = master-bin.log    #和主机相同
binlog-format = mixed
server-id = 1 #切记不能与主机相同
#如果是需要忽略哪些数据库,操作如下
#binlog-ignore-db=mysql
#如果是关注哪些数据库
binlog-do-db=suntree_cmp_test

expire_logs_days = 7 #超过7天的binlog删除

修改配置,也是需要重启mysql服务

然后登陆从库,在从数据库上配置连接主数据库配置,指定复制使用的账号/密码,主服务器的 ip、端口、以及日志文件及 pos 位置等

CHANGE MASTER TO 
MASTER_HOST='119.23.xxx.xxx',
MASTER_USER='username',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;

MASTER_LOG_FILE对应主库​​show master status\G​​​的File值
MASTER_LOG_POS对应主库​​​show master status\G​​的pos值

配置好后,从数据库上启动 slave 进程,让从数据库的 I/O 和 SQL 线程生效

mysql> start slave

可以看一下slave线程是否启动成功
mysql主从复制实践_数据库_05

双yes就说启动成功,然后修改主库数据,从库就会同步


如果有任何一个NO就需要去看日志,日志位置

show variables like 'log_%';

mysql主从复制实践_mysql_06
然后根据erroe日志,具体问题具体分析


可能的错误

密码错误、主从MASTER_LOG_FILE、MASTER_LOG_POS不一致,因为如果重启数据库这两个值可能会改变

如果条件允许,主从数据库版本最好一致,避免一些无法预知的错误


举报

相关推荐

MySQL主从复制

mysql 主从复制

MYSQL主从复制

MySQL:主从复制

mysql主从复制

【MYSQL】主从复制

mySQL主从复制

0 条评论