mysql基础之mysql主从架构
一、概念
主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构来搭建

二、配置主节点
1、配置准备
(1)yum源配置
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0
(2)服务器1:192.168.11.7(主)
服务器2:192.168.11.8(从)
2、下载mysql,修改配置文件(5.7版本与mariadb冲突,需要先删除mariadb)
yum -y install mysql-com*server
[root@ren7 ~]# vim /etc/my.cnf.d/server.cnf
[mysqld]
server-id=1 <<主从节点必须保证不能一样
log-bin=mysql-bin <<定义二进制日志文件保存文件和格式
binlog_format=row <<主从节点保持一致,要么都是row,要么都是mixed
3、重启mysql服务
[root@ren7 ~]# systemctl restart mysql
4、主节点上授权具有复制权限的用户(创建主从连接账号与授权)
mysql [(none)]> create user 'slave'@'%' identified by 'Slave123/';
Query OK, 0 rows affected (0.00 sec) mysql [(none)]> grant replication slave on *.* to 'slave'@'%';
Query OK, 0 rows affected (0.00 sec) mysql [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
5、查看当前二进制日志文件
mysql [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 781 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
三、配置从节点(修改从节点和主节点时间同步,可以使用NTP服务或者date直接设置)
1、修改配置文件
[root@ren8 ~]# vim /etc/my.cnf.d/server.cnf
###########################
[mysqld]
server-id=2
binlog_format=row
log-bin=mysql-bin
##########################
2、重启mysql服务
[root@ren8 ~]# service mysql restart
Redirecting to /bin/systemctl restart mysql
3、登录数据库
[root@ren8 ~]# mysql_secure_installation
[root@ren8 ~]# mysql -u root -p123
Welcome to the mysql monitor. Commands end with ; or \g.
Your mysql connection id is 24
Server version: 10.2.26-MariaDB mysql Server Copyright (c) 2000, 2018, Oracle, mysql Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
4、建立主从连接
格式:CHANGE MASTER TO 选项
选项:
MASTER_HOST = 'host_name' 指定主服务的ip或者主机名
MASTER_USER = 'user_name' 指定主服务器的用户名
MASTER_PASSWORD = 'password' 指定用户名的密码
MASTER_PORT = port_num 指定连接的端口,默认是3306
MASTER_CONNECT_RETRY = interval 指定连接失败的时候的重试间隔时间
mysql [(none)]> change master to master_host='192.168.11.7', master_user='slave', master_password='Slave123/', master_log_file='mysql-bin.000001', master_log_pos=781;
Query OK, 0 rows affected (0.03 sec)
5、启动从节点
mysql [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
6、查看从节点连接状态
主要看IO以及SQL线程是否启动
mysql [(none)]> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 192.168.11.7
Master_User: slave01
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 781
Relay_Log_File: ren8-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Connecting <<IO线程正在连接
Slave_SQL_Running: Yes <<SQL线程启动成功
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: 781
Relay_Log_Space: 256
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: 2003
Last_IO_Error: error connecting to master 'slave@192.168.11.7:3306' - retry-time: 60 maximum-retries: 86400 message: Can't connect to MySQL server on '192.168.11.7' (113 "No route to host")
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: conservative
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
1 row in set (0.00 sec) ERROR: No query specified
问题解决:
slave_IO_Running:Connecting一直处于连接状态
错误原因:
1、网络不通
2、账户密码错误
3、防火墙
4、mysql配置文件问题
5、连接服务器时语法错误
6、主服务器mysql权限
此处是防火墙的原因,在主从服务器上添加防火墙端口即可;
[root@ren7 ~]# firewall-cmd --add-port=3306/tcp
success
[root@ren7 ~]# firewall-cmd --add-port=3306/tcp --permanent
success
[root@ren8 ~]# firewall-cmd --add-port=3306/tcp
success
[root@ren8 ~]# firewall-cmd --add-port=3306/tcp --permanent
success
mysql [(none)]> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql [(none)]> show slave status\G;
*************************** 1. row ***************************
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
7、测试
--在主节点创建一个新表
mysql [(none)]> create database zhong;
Query OK, 1 row affected (0.00 sec)
--在从节点查看是否创建成功
mysql [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| zhong |
+--------------------+
4 rows in set (0.00 sec)
--如果出现不同步可以执行以下步骤
stop slave
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave
mysql基础之mysql主从架构的更多相关文章
- (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)
(3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...
- (3.16)mysql基础深入——mysql字符集
(3.16)mysql基础深入——mysql字符集 关键字:mysql字符集,mysql编码 目录 1.概念 2.常用的字符编码 3.查看mysql字符集 [3.1]查看服务器支持的字符集 [3.2] ...
- (3.15)mysql基础深入——mysql默认数据库/系统数据库
(3.15)mysql基础深入——mysql默认数据库 关键词:Mysql默认数据库,mysql系统数据库 系统数据库的组成 一共4个 [1]information_schema(可以理解成字典表) ...
- (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest【待完善】
(3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢 ...
- (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】
(3.13)mysql基础深入——mysql 日志分析工具之mysqlsla 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢查询日志分析工具 ...
- (3.11)mysql基础深入——mysql文件分类与配置文件管理
(3.11)mysql基础深入——mysql文件分类与管理 关键词:mysql配置文件,mysql参数文件,mysql中的my.cnf 目录:mysql数据库文件分类: [1]参数文件:my.cnf ...
- (3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析
(3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析 my.server主要分为3大部分 [1]变量初始化部分 [2]函数声明部分 [3]具体执行部分 #!/bin/sh # ...
- (3.2)mysql基础深入——mysql源码阅读工具安装与应用
(3.2)mysql基础深入——mysql源码阅读工具安装与应用 关键字:mysql源码阅读工具 工具列举:一般多用[1][2][3]吧 [1]source insight [2]写字板/记事本 UE ...
- (3.1)mysql基础深入——mysql二进制与源码目录结构介绍
(3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...
- MySQL基础、MySQL安装和MariaDB安装
MySQL基础 目录 MySQL基础 关系型数据库介绍 数据结构模型 RDBMS专业名词 关系型数据库的常见组件 SQL语句 MySQL安装与配置 MySQL安装 MariaDB安装 关系型数据库介绍 ...
随机推荐
- ubuntu16.04 下同时打开多个终端窗口
reference :https://forums.solydxk.com/viewtopic.php?t=5139 reference : http://blog.51cto.com/huqilon ...
- day-25-类的继承顺序-父类对子类的约束-多态-队列和栈
一.类的继承顺序 只要继承object类就是新式类 不继承object类的都是经典类 在python3 中所有的类都继承object类,都是新式类 在python2 中不继承object的类都是经典类 ...
- ASP去除所有html标签
ASP去除所有html标签 function nohtml(str) dim re Set re=new RegExp re.IgnoreCase =true re.Global=True re.Pa ...
- hdu3746 KMP的next数组应用,求项链首尾项链循环
题意: 给你一个项链,问你最少加多少个珠子能满足整个项链是一个循环的项链(首尾相连) 思路: KMP的简单应用只要了解next数组的意义就好说了,下面总结下 next在循环方面 ...
- UVA11520填充正方形
题意: 给你一个n*n的矩阵,让你往里面添加大写字母,矩阵有的字母已经给填好了,然后要求是每个格子都不能与他相邻的格子的大写字母相同,如果有多个答案,输出从上到下,从左到右所连接的成的那个n ...
- Linux下用SUID提权
关于SUID详细:Linux下的用户.组和权限 SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得 ...
- jdk8-stream-api
1.stream简介 stream 是一个用来处理集合个数组的api jdk 8 引入strream的原因:1.去掉for循环,使编程变的更加简单(实际运行效率可能没有for循环高)2.paralle ...
- Day006 命令行传参
命令行传参 有时候你希望运行一个程序时候再传递给它消息,这要靠传递命令行参数给main()函数实现. 使用方法 写测试代码. public static void main(String[] args ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.3.35 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- Codeforces Round #688 (Div. 2)
A. Cancel the Trains 题意:给定两个数组,找出这两个数组中有多少重复元素,然后输出 思路:直接找 代码: 1 #include<iostream> 2 #include ...