mysql 9比10大的问题_mysql 高级 9-主从复制

参考

开发环境

第一台机器-Linux-主机名称

版本

CentOS7

CentOS-7-x86_64-DVD-2003.iso

Linux

3.10.0-1127.el7.x86_64

mysql

5.7.16

IP

192.168.241.128

第二台机器-Windows-从机名称

版本

操作系统

Windows 10 X64

mysql

8.0.11

IP

10.98.217.41

复制的基本原理

slave 会从 master 读取 binlog 来 进行数据同步。

mysql 9比10大的问题_mysql 高级 9-主从复制_第1张图片

MySQL 复制过程分成三步:

1.master 将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events。

2.slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);

3.slave 重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL 复制是异步的且串行化的。

mysql 9比10大的问题_mysql 高级 9-主从复制_第2张图片

复制的基本原则

1.每个 slave 只有一个 master

2.每个 slave 只能有一个唯一的服务器 ID

3.每个 master 可以有多个 salve

复制的最大问题

延时

前提条件

(1)mysql 版本一致且后台以服务运行

(2)主从都配置在 [mysqld] 结点下,都是小写

(3)mysql 主从复制起始时,从机不继承主机数据

主机配置

1.修改主节点配置文件-my.cnf

vi /etc/my.cnf

[mysqld]

log-bin=mysql-bin

server-id=1

innodb-file-per-table=ON

skip_name_resolve=ON

2.重启 mysqlsystemctl restart mysqld.service

3.查看日志信息

(1)查看二进制日志是否开启

showglobalvariables like'%log%';

mysql 9比10大的问题_mysql 高级 9-主从复制_第3张图片

(2)查看主节点二进制日志列表

show master logs;

mysql 9比10大的问题_mysql 高级 9-主从复制_第4张图片

(3)查看主节点的 server id

showglobalvariables like'%server%';

mysql 9比10大的问题_mysql 高级 9-主从复制_第5张图片

4.在主节点上创建有复制权限的用户#在主节点创建一个用户 luoma_slave,用于从节点链接主节点时使用,密码为 luoma123456

#%:表示任何机器,也可以指定为从机 IP

grant replication slave,replication client on*.*to'luoma_slave'@'%'identifiedby'luoma123456';

c16c8c20a29e5d82cba1402c527b0bd9.png

假如执行报下面的错误

>1064-Youhave an errorinyour SQL syntax;check the manual that corresponds to yourMySQLserver versionforthe right syntax tousenear'IDENTIFIED BY 'luoma123456''at line4

>时间:0.001s

这个错误的原因是 mysql8.0 以上版本不支持创建用户和授权同时进行。使用下面的 sql 创建

#在主节点创建一个用户 luoma_slave,用于从节点链接主节点时使用,密码为 luoma123456

CREATE USER'luoma_slave'@'%'IDENTIFIED WITH mysql_native_password BY'luoma123456';

#授权

#ON *.* db.table: 数据库和数据表

#TO user: 要授权的用户

#@ host: % 表示任何主机

GRANT REPLICATION SLAVE ON*.*TO'luoma_slave'@'%';

5.刷新flush privileges;

6.查询 master 的状态show master status;

记录下 File 和 Position 的值

File

Position

Binlog_Do_DB

Binlog_Ignore_DB

Executed_Gtid_Set

mysql-bin.000001

1503

.

mysql 9比10大的问题_mysql 高级 9-主从复制_第6张图片

记录下 File 和 Position 的值,从机配置会使用到。

主服务器配置完成

注意:确保主服务器的 iptables 没有阻断 3306 的访问端口。

从机配置

1.修改从节点配置文件-my.ini

D:\Program Files\mysql-8.0.11-winx64\my.ini

[mysqld]

server-id=2

log_bin=mysql-bin

2.重启 mysql 服务C:\Windows\system32>net stop mysql

MySQL服务正在停止.

MySQL服务已成功停止。

C:\Windows\system32>net start mysql

MySQL服务正在启动....

MySQL服务已经启动成功。

3.查看从节点日志信息

(1)查看中继日志是否开启

showglobalvariables like'%log%';

mysql 9比10大的问题_mysql 高级 9-主从复制_第7张图片

(2)查看 server 相关信息

showglobalvariables like'%server%';

mysql 9比10大的问题_mysql 高级 9-主从复制_第8张图片

4.在从节点配置访问主节点的参数信息

添加 主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。

注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。

语法格式

CHANGE MASTER TO MASTER_HOST='主机 IP',

MASTER_USER='主节点创建的用户名',

MASTER_PASSWORD='主节点创建的密码',

MASTER_LOG_FILE='File 名字',

MASTER_LOG_POS=Position数字;CHANGE MASTER TO

MASTER_HOST='192.168.241.128',

MASTER_USER='luoma_slave',

MASTER_PASSWORD='luoma123456',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=1503;

5.查看从节点的状态信息SHOW SLAVE STATUS;

因为没有启动从节点的复制线程,IO线程 和 SQL 线程都为 NO

a20bc0b05a5b1e94845fa58630654d26.png

6.启动复制线程

START SLAVE 可以指定线程类型:IO_THREAD,SQL_THREAD, 如果不指定,则两个都启动。

#启动复制线程

start slave;

#立即生效

flush privileges;

#查看从节点的状态信息

SHOW SLAVE STATUS;

下面两个参数都是 Yes,则说明主从配置成功!

01d1223725d69584277d8f1849da4dfc.png

至此,mysql 的主从复制配置完成。

如果需要重新配置,需要先停止复制线程

stop slave;

配置完成之后再重新启动。

测试

1.主机创建数据库,创建表,添加记录mysql>create database luoma_test_1;

QueryOK,1row affected(0.05sec)

mysql>create table t1(idint,content varchar(100));

QueryOK,0rows affected(0.13sec)

mysql>insertintot1(id,content)values(1,'luoma1.1');

QueryOK,1row affected(0.05sec)

mysql>insertintot1(id,content)values(2,'luoma1.2');

QueryOK,1row affected(0.34sec)

mysql>select*fromt1;

mysql 9比10大的问题_mysql 高级 9-主从复制_第9张图片

2.重机刷新数据库

mysql 9比10大的问题_mysql 高级 9-主从复制_第10张图片select*fromt1;

mysql 9比10大的问题_mysql 高级 9-主从复制_第11张图片

你可能感兴趣的:(mysql,9比10大的问题)