mysql 5.7 主从设置

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

主从同步的结构类型

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

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(该参数需要在做主从从结构时中间的从服务器上配置)

原文地址:https://www.cnblogs.com/zhanzhan/p/9529561.html

时间: 2024-11-10 15:44:51

mysql 5.7 主从设置的相关文章

mysql简单的主从设置及问题解决

mysql简单的主从设置及问题解决 这周,本人因为工作需要,需要了解mysql如何设置主从关系,所以对这个新鲜的事物着手尝试了一下.其实网上有很多关于这个话题的文章,我也是在百度了很多文章后,终于成功的设置成功了.下面,就将一个简短易实践的过程分享给大家. 一.软件及环境 软件:MySql Server 5.6.21(主从版本尽量保持一致); 环境: 1.主机IP:192.168.10.34;主机port:3306 2.从机IP:192.168.10.35从机port:3306 二.配置过程 配

源码安装mysql5.6.20&&mysql主从设置(多实例做多个主从)

一.源码安装mysql5.6.20 1.编译环境安装 yum install wget gcc* make openssl openssl-devel openssl-clients -y && yum groupinstall "Development Libraries" -y 2.源码下载(软件见Linux部署源码包) wget -P /usr/local/src/ http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.

配置mysql数据库的主从同步实验

mysql数据库的主从同步实验 一. 实验环境部署 主服务器(mysql  master) IP: 192.168.8.241  端口3306 从服务器(mysql  slave)  IP: 192.168.8.242  端口3306 虚拟机配置:内存2G,硬盘28G,2块网卡(1块网卡也可以),注意复制虚拟机 时候选择生成不同的MAC地址,虚拟机生成之后,网卡的的名称会变为eth2.eth3,修改/etc/udev/rules.d/70-persistent-net.rules文件,将无效的M

Mysql 5.6主从同步配置与解决方案

主库IP:192.168.1.10 从库IP:192.168.1.11 1.主库配置编辑my.cnf: # 启用二进制日志 log_bin = mysql-bin server-id = 111 log-bin-index=mysql-bin.index sync_binlog=1 binlog_format=mixed binlog-do-db = testdb //同步数据库 binlog-ignore-db = mysql binlog-ignore-db = performance_sc

mysql只读模式的设置方法与实验【转】

在MySQL数据库中,在进行数据迁移和从库只读状态设置时,都会涉及到只读状态和Master-slave的设置和关系. 经过实际测试,对于MySQL单实例数据库和master库,如果需要设置为只读状态,需要进行如下操作和设置:      将MySQL设置为只读状态的命令:# mysql -uroot -pmysql> show global variables like "%read_only%";mysql> flush tables with read lock;mysq

构建Mysql三部曲之三 主从案例

一.Mysql配置文件解读 (以mysql-server-5.1.73-3.el6_5.x86_64版本为例) Mysql配置文件一般位于/etc/my.cnf,默认配置如下[[email protected] /]# cat /etc/my.cnf [mysqld]datadir=/var/lib/mysql  ##从给定目录读取数据库文件socket=/var/lib/mysql/mysql.sock ##为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(仅适用于UNIX/Lin

redis 业务数据的主从设置

redis与mysql的主从很相似,而且比mysql设置主从更加简单: 分析: 1.redis主从复制特点: (1).master可以拥有多个slave (2).多个slave可以连接同一个master外,还可以连接到其他slave (3).主从复制不会阻塞master,在同步数据时,master可以继续处理client请求 (4).提高系统的伸缩性 2.redis主从复制过程: 当配置好slave后,slave与master建立连接,然后发送sync命令.无论是第一次连接还是重新连接,mast

配置mysql的双向主从并通过keepalived实现高可用

说明: 此文章是借鉴好朋友的文档 http://sunys.blog.51cto.com/8368410/1639820 环境: mysql的版本:mysql-5.6.22 系统:centos6.4 master:192.168.186.129 slave:192.168.186.128 vip: 192.168.186.140          #虚拟ip,web服务器连接的ip 步骤:    配置mysql的单向主从: 注意:mysql的安装步骤省略 master:         #开启二

MySQL跳过主从错误工具(mysqlha_skiperror.sh)

工具名称:mysqlha_skiperror.sh 工具用途:用于MySQL跳过主从错误 工具参数:options: -P port   指定端口                   -N number   指定跳过错误次数  不指定默认为10次(如果不知道可以设置大一些,会记录log) -C      error code  Take ,  as the separator  指定跳过错误的状态码 可以跳过多个以,分隔 工具示例: mysqlha_skiperror.sh -P 4444 -C