一、概念

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

二、配置主节点

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主从架构的更多相关文章

  1. (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)

    (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...

  2. (3.16)mysql基础深入——mysql字符集

    (3.16)mysql基础深入——mysql字符集 关键字:mysql字符集,mysql编码 目录 1.概念 2.常用的字符编码 3.查看mysql字符集 [3.1]查看服务器支持的字符集 [3.2] ...

  3. (3.15)mysql基础深入——mysql默认数据库/系统数据库

    (3.15)mysql基础深入——mysql默认数据库 关键词:Mysql默认数据库,mysql系统数据库 系统数据库的组成 一共4个 [1]information_schema(可以理解成字典表) ...

  4. (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest【待完善】

    (3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢 ...

  5. (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】

    (3.13)mysql基础深入——mysql 日志分析工具之mysqlsla 关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢查询日志分析工具 ...

  6. (3.11)mysql基础深入——mysql文件分类与配置文件管理

    (3.11)mysql基础深入——mysql文件分类与管理 关键词:mysql配置文件,mysql参数文件,mysql中的my.cnf 目录:mysql数据库文件分类: [1]参数文件:my.cnf ...

  7. (3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析

    (3.4)mysql基础深入——mysql.server启动脚本源码阅读与分析 my.server主要分为3大部分 [1]变量初始化部分 [2]函数声明部分 [3]具体执行部分 #!/bin/sh # ...

  8. (3.2)mysql基础深入——mysql源码阅读工具安装与应用

    (3.2)mysql基础深入——mysql源码阅读工具安装与应用 关键字:mysql源码阅读工具 工具列举:一般多用[1][2][3]吧 [1]source insight [2]写字板/记事本 UE ...

  9. (3.1)mysql基础深入——mysql二进制与源码目录结构介绍

    (3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...

  10. MySQL基础、MySQL安装和MariaDB安装

    MySQL基础 目录 MySQL基础 关系型数据库介绍 数据结构模型 RDBMS专业名词 关系型数据库的常见组件 SQL语句 MySQL安装与配置 MySQL安装 MariaDB安装 关系型数据库介绍 ...

随机推荐

  1. (九)Struts2模型驱动和属性驱动

    出于结构清晰的考虑,应该采用单独的Model实例来封装请求参数和处理结果,这就是所谓的模型驱动, 所谓模型驱动,就是使用单独的JavaBean来贯穿整个MVC流程. 所谓属性驱动,就是使用属性来作为贯 ...

  2. mariadb_2 单表的增删改查

    命令关键字: 创建表  create 删除表  drop 修改表的内容  update 修改表的结构  alter 删除表中内容 delete 增加表中内容 insert 查询表中内容 select ...

  3. (九)VMware Harbor 项目管理-上传/下载镜像

    VMware Harbor项目管理 Harbor中的项目包含应用程序的所有存储库. Harbor有两类项目: 公共:所有用户都拥有公共项目的读取权限,您可以方便地以这种方式与其他人共享一些存储库. 私 ...

  4. 在Bootstrap开发框架基础上增加WebApi+Vue&Element的前端

    基于Metronic的Bootstrap开发框架是我们稍早一点的框架产品,界面部分采用较新的Bootstrap技术,框架后台数据库支持Oracle.SqlServer.MySql.PostgreSQL ...

  5. Java 常用类总结(SE基础)

    本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习. 1. 字符串相关的类 1.1 String String是一个final类,代表不可变的字符序列.不可被继承. Strin ...

  6. 让我们一起建设 Vue DevUI 项目吧!🥳

    DevUI Design 是从华为云 DevCloud 众多业务孵化出来的一套设计体系,DevUI 倡导沉浸.灵活.至简的设计价值观,提倡设计者为真实的需求服务,为多数人进行设计,拒绝哗众取宠.取悦眼 ...

  7. 硬盘分区形式(MBR、GPT)、系统引导、文件系统、Inode和Block

    目录 MBR和GPT MBR的局限性 GPT的优势 主分区.扩展分区和逻辑分区 挂接卷 Legacy.UEFI引导和GRUB引导 文件系统(FAT16.32.NTFS和EXT2.3.4.Xfs.Tmp ...

  8. PKI/CA与证书服务

    目录 PKI CA RA LDAP目录服务 CRL证书作废系统 数字证书 证书验证 证书撤销 证书更新 PKI系统的构成 PKI PKI(Public Key Infrastructure)公钥基础设 ...

  9. Web漏洞小结

    本文是对Web中最常见漏洞的一个小结: 注入类漏洞: SQL注入:SQL注入漏洞详解 XML注入:XXE(XML外部实体注入) 代码注入:代码注入漏洞 CRLF注入:CRLF注入 注入类漏洞是应用违背 ...

  10. Windows核心编程 第九章 线程与内核对象的同步(下)

    9.4 等待定时器内核对象 等待定时器是在某个时间或按规定的间隔时间发出自己的信号通知的内核对象.它们通常用来在某个时间执行某个操作. 若要创建等待定时器,只需要调用C r e a t e Wa i ...