Mysql主从同步
admin
2023-05-03 20:41:43
0次

什么是Mysql 主从同步 ?


从库同步主库上的数据,(让其他数据库服务器自动同步当前正在被访问的数据服务器上的数据)

主从同步的结构类型

1主------>1从 (常用) 一台主服务器(负责业务更新)一台从服务器

1主------->多从(常用)一台主服务器(负责业务更新)多台从服务器

主------->从-------->从 一台主服务器(负责业务更新)一台从服务器 (同时作为另一台的主服务器)一台从服务器

主<==>主(不单独用,一般和第三方软件一起做高可用集群或负载均衡) 服务器相互为主从服务器

环境要求

1.mysql服务器版本需一样

2.网络能互联

3.防火墙和selinux需要放行mysql 实验环境可以将selinux 和防火墙全部关闭

4.在配置成主从同步结构之前,一定要让从库有和主库一样的数据(如果两个服务器数据结构不相同在主服务器上能执行的sql在从服务器上,在从服务器上执行出错,sql线程就会NO了,不再同步)

主数据库服务器

1.用户授权

grant replication slave on . to 授权用户@"从服务器ip地址" identified by "密码"

2.启用binlog日志

vim /etc/my.cnf

[mysqld]

server_id=0-255的值主从不要重复

log-bin=/指定binlog日志的文件夹/日志文件名 mysql服务用户需要有指定文件夹的读写执行权限 可以不指定默认是在数据库目录下/var/lib/mysql

binlog-format="mixed" 使用混合模式记录日志(混合模式记录改变结果和sql命令)

3.查看正在使用的binlog日志

show master status;


从数据库服务器

1.验证主库授权

#mysql -h主库地址 -u授权用户 -p授权密码;

在从服务器命令行能登陆说明授权成功

2.指定server_id

vim /etc/my.cnf

[mysqld]

server_id=52

:wq

show slave status; 查看自己是不是从库信息

因为还没有指定过查不到信息

3.指定主库信息

mysql> change master to
-> master_user="repluser", // 主服务器授权用户
-> master_host="192.168.4.51", //主服务器ip地址
-> master_password="123456", //授权密码
-> master_log_file="A1-bin.000001", //主服务器正在使用的binlog日志 可以在主服务器上show master status 查看到正在使用的日志以及已经记录的偏移量
-> master_log_pos=452;//binlog日志已经记录的偏移量
Query OK, 0 rows affected, 2 warnings (0.23 sec)

4.查看配置

show slave status\G;
1. row
Slave_IO_State:
Master_Host: 192.168.4.51
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: A1-bin.000001
Read_Master_Log_Pos: 452
Relay_Log_File: A2-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: A1-bin.000001
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 452
Relay_Log_Space: 154
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_UUID:
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
5.器用salve进程

mysql> start slave;
Query OK, 0 rows affected (0.08 sec)

再次查看配置的时候以下两个参数的值是YES

         Slave_IO_Running: YES   //IO线程
            将主服务器上的binlog日志(由主服务器上的  Binlog Dump 推送新的日志记录)的sql命令记录到本机的中继日志文件里 /var/lib/mysql/主机名-relay-bin.编号
        Slave_SQL_Running: YES //SQL线程

验证配置

在主服务器上创建数据库,从服务器上就有主服务器上创建的数据库

常见错误原因

I/O线程起不来

配置参数出错将

防火墙

selinux

如果有错下列参数会有记录错误原因

show slave status\G;

           Last_IO_Errno: 0
           Last_IO_Error:
           Last_SQL_Errno: 0
           Last_SQL_Error:

SQL线程起不来

主从配置之前数据库不统一,导致冲突

解决办法 stop slave ;

先将从服务器上的数据库恢复成主服务器上统一的数据库

再启动 start slave;

一主多从就是再加一个从服务器

在主服务器上再新建一个从服务器授权用户

再配置一台从数据库服务器

主数据库服务器部分配置文件参数

[mysqld]

binlog_do_db=库名列表 //允许从同步的库

binlog_ignore_db=库名列表 //不允许从同步的库

两个参数都不写是同步所有的库

从数据库服务器部分配置文件参数

[mysqld]

binlog_do_db=库名列表 //只从主同步的库

binlog_ignore_db=库名列表 //不从主同步的库

两个参数都不写是同步所有的库

log_slave_updates //级联复制 执行中继日志中的sql命令时记录到binlog日志中 默认binlog不记录执行中继日志的sql(该参数需要在做主从从结构时中间的从服务器上配置)

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...