mysql 5.7 主从模式部署 转狂神说

1、mysql 一主一从部署

1.1、yum安装mysql

http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/

选择要下载的mysqlrpm

1.2 、配置Mysql扩展源

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm

1-3、yum安装mysql

yum install mysql-community-server -y

1-4、启动Mysql 并加入开机自启

systemctl start mysqld
systemctl stop mysqld
systemctl enable mysqld

1-5、使用Mysq初始密码登录数据库

初始化密码
grep "password" /var/log/mysqld.log
mysql -uroot -pma1S8xjuEA/F

1-6、修改数据库密码

数据库默认密码规则必须携带大小写字母、特殊符号,字符长度大于8否则会报错。
因此设定较为简单的密码时需要首先修改set global validate_password_policy和_length参数值。

>mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

>mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

1-7、修改密码

mysql> set password for root@localhost = password('mkxiaoer');
Query OK, 0 rows affected, 1 warning (0.00 sec)
或者
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

1-8、登录测试

[root@http-server ~]# mysql -uroot -pmkxiaoer
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.

2、概述

主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。

复制是异步的 从站不需要永久连接以接收来自主站的更新。
根据配置,您可以复制数据库中的所有数据库,所选数据库甚至选定的表。

2.1、MySQL中复制的优点包括:

1、横向扩展解决方案 - 在多个从站之间分配负载以提高性能。在此环境中,所有写入和更新都必须在主服务器上进行。但是,读取可以在一个或多个从设备上进行。该模型可以提高写入性能(因为主设备专用于更新),同时显着提高了越来越多的从设备的读取速度。

2、数据安全性 - 因为数据被复制到从站,并且从站可以暂停复制过程,所以可以在从站上运行备份服务而不会破坏相应的主数据。
分析 - 可以在主服务器上创建实时数据,而信息分析可以在从服务器上进行,而不会影响主服务器的性能。

3、远程数据分发 - 您可以使用复制为远程站点创建数据的本地副本,而无需永久访问主服务器

2.2、前提是作为主服务器角色的数据库服务器必须开启二进制日志

主服务器上面的任何修改都会通过自己的 I/O tread(I/O 线程)保存在二进制日志 Binary log 里面。

从服务器上面也启动一个 I/O thread,通过配置好的用户名和密码, 连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log(中继日志)里面。

从服务器上面同时开启一个 SQL thread 定时检查 Realy log(这个文件也是二进制的),如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。
每个从服务器都会收到主服务器二进制日志的全部内容的副本。
从服务器设备负责决定应该执行二进制日志中的哪些语句。
除非另行指定,否则主从二进制日志中的所有事件都在从站上执行。
如果需要,您可以将从服务器配置为仅处理一些特定数据库或表的事件

03、具体配置如下

03-01、Master节点配置/etc/my.cnf (master节点执行)

vim /etc/my.cnf
[mysqld]
## mysql事务隔离基别
transaction-isolation=READ-COMMITTED
## 同一局域网内注意要唯一
server-id=100  
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
## 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)
binlog-ignore-db=mysql
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed

03-02、Slave节点配置/etc/my.cnf (slave节点执行)

> vim /etc/my.cnf
[mysqld]
## mysql事务隔离基别
transaction-isolation=READ-COMMITTED
## 设置server_id,注意要唯一
server-id=102
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
##复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)
binlog-ignore-db=mysql
## 如果需要同步函数或者存储过程
log_bin_trust_function_creators=true
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

03-03、在master服务器授权slave服务器可以同步权限(master节点执行)

注意:在master服务器上执行

mysql > mysql -uroot -pmaster的密码
# 授予slave服务器可以同步master服务
mysql > grant replication slave, replication client on *.* to 'root'@'slave服务的ip' identified by 'slave服务器的密码';
mysql > flush privileges;
# 查看MySQL现在有哪些用户及对应的IP权限(可以不执行,只是一个查看)
mysql > select user,host from mysql.user;

03-04、查询master服务的binlog文件名和位置(master节点执行)

mysql > show master status;


位置信息

日志文件名:mysql-bin.000002
复制的位置:154

03-05、slave进行关联master节点(slave节点执行)

mysql > mysql -uroot -p你slave的密码

开始绑定

mysql> change master to master_host='master服务器ip', master_user='root', master_password='master密码', master_port=3306, master_log_file='mysql-bin.000002',master_log_pos=154;
这里注意!!!! master_log_file 和 master_log_pos 都是通过 master服务器通过show master status获得。

03-06、在slave节点上查看主从同步状态(slave节点执行)

启动主从复制

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

再查看主从同步状态

mysql> show slave status\G;

同步状态图

状态

03-07、主从复制测试

1:在master下创建数据库和表,或者修改和新增,删除记录都会进行同步(master节点执行)
2:点击查看slave节点信息(slave节点执行)

你可能感兴趣的:(mysql 5.7 主从模式部署 转狂神说)