栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

MySQL主从同步搭建(一主一从、一主多从,超详细)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL主从同步搭建(一主一从、一主多从,超详细)

环境说明:使用内网IP

主机A(主):192.168.1.1   

主机B(从):192.168.1.2   

主机A和B分别安装mysql,版本需一致(A、B均为5.6.35)

1、登陆主机A,在主服务器上,设置一个从库的账户

mysql>grant replication slave on *.* to test@"192.168.1.2" identified by 'test123';

或者

mysql>grant replication slave,super,reload on *.*  to test@'%' identified by 'est123'; #根据需求权限进行相应赋权

mysql>flush privileges;

mysql>select user,host,password from mysql.user;    #查看账户

赋予从机权限,有多台从机,就执行多次;一般不赋予*.*任意权限,只赋予需同步的库的权限

2、启用binlog日志并指定server_id(修改之后必须重启mysql服务)

vim /etc/my.cnf

[mysqld]

server_id=1       #指定服务器ID,主机标示,整数(必须修改)

log_bin=mysql-bin     #启用binlog日志(可不修改)

binlog_format= mixed  #指定日志格式(可不修改)

:wq

可以通过mysql>show variables like 'log_%'; 验证二进制日志是否已经启动。

3、现在可以停止主数据的的更新操作,并生成主数据库的备份,我们可以通过mysqldump导出数据到从数据库,当然了,你也可以直接用cp命令将数据文件复制到从数据库去,注意在导出数据之前先对主数据库进行READ LOCK,以保证数据的一致性

(1) mysql> flush tables with read lock;

(2) 然后mysqldump导出数据:

mysqldump -h127.0.0.1 -p3306 -uroot -p需同步数据库> /data/backup/DB.sql

(3)查询主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复。

mysql> show master status;

(4)主数据库备份完毕,恢复写操作

mysql> unlock tables;

(5)将刚才主数据备份的test.sql复制到从数据库(navicat、sqlyog、命令行都可以),进行导入,在B上操作

mysql -h127.0.0.1 -p3306 -uroot -p 数据库名 < /data/backup/DB.sql   

mysql -uroot -p 数据库名 < /data/backup/DB.sql

mysql> source  /home/db.sql;     #直接进去数据库导入

4、修改从数据库的my.cnf,增加server-id参数(修改之后必须重启mysql服务),在B上操作

vim /etc/my.cnf

[mysqld]

server_id=2   #必须设置并与A中的不是同一数字

log_bin=pc2    #自定义,可以不启用

binlog_format="mixed"

replicate-do-db = test     #只同步test数据库,在master端不指定binlog-do-db(需同步的数据库),在slave端用replication-do-db来过滤

replicate-ignore-db = mysql    #忽略的库

replicate-do-table = home.mem_fan

replicate-ignore-table =

replicate_wild_do_table =

replicate_wild_ignore_table =

:wq

5、指定从数据库(在B上操作)

mysql  -uroot -p

mysql> show slave status;  #若之前有从库,可先还原从库,使用reset slave,使用reset slave之前必须使用stop slave 命令将复制进程停止。

mysql> change master to  

master_host="192.168.1.1",  

master_user="test",       

master_password="test123",

master_port=3306,

master_log_file="mysql-bin.000034",       #从A查看

master_log_pos=140428300;           #偏移量,从A查看

change master to master_host="192.168.1.1",master_user="test",master_password="test123",master_port=3306,master_log_file="mysql-bin.000919",master_log_pos=1049322004;

6、在从服务器B上,启动slave进程,并验证

mysql>show slave statusG;      #G:分行显示

mysql> start slave;

mysql>show slave statusG;

            Slave_IO_Running: Yes      #查看

            Slave_SQL_Running: Yes     #查看

验证主从是否正常同步:

在A中创建同步的数据库,然后在库中创建表;再在B中查看是否有创建的库和表

mysql>create database test1;

mysql>use test1;

mysql>CREATE TABLE student (id int,name varchar(20));

在B中查看是否有student这个表。

自此,MySQL主从同步配置完毕。

备注(重要):若数据库主从架构为 A-->B-->C,即A为从服务器B的主库,B为从服务器C的主库。为了能工作,B必须既为主库又为从库;必须用log-bin启动A和B以启用二进制日志,并且用log-slave-updates选项启动B,log-slave-updates参数默认是关闭的状态,如果不手动设置,那么bin-log只会记录直接在该库上执行的SQL语句,由replication机制的SQL线程读取relay-log而执行的SQL语句并不会记录到bin-log,那么就无法实现上述的三级级联同步。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/341377.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号