mysql 5.7 主从设置

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

主从同步的结构类型linux

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

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

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

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

环境要求网络

1.mysql服务器版本需同样数据结构

2.网络能互联负载均衡

3.防火墙和selinux须要放行mysql 实验环境能够将selinux 和防火墙所有关闭ide

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.查看配置

 

mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.95.140
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: A1-bin.000001
Read_Master_Log_Pos: 452
Relay_Log_File: zat2-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)

ERROR:
No query specified

mysql> start slave;
Query OK, 0 rows affected (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(该参数须要在作主从从结构时中间的从服务器上配置)

相关文章
相关标签/搜索