linux安装mysql主从_linux安装MySQL主从同步(一主两从)搭建与配置

一、主从同步原理:

客户端访问主库,从库复制、同步主库的所有操作

单项复制时,建议将从库设置为只读

linux安装mysql主从_linux安装MySQL主从同步(一主两从)搭建与配置_第1张图片

从库 从主机上同步数据的工作过程,如图:

1、Master,记录数据更改操作

— 启用binlog日志

— 设置binlog日志格式

— 设置server_id

2、Slave运行2个线程

— Slave_IO:复制master主机binlog日志文件里的SQL到本机的relay-log文件里

— Slave_SQL:执行本机relay-log文件里的SQL语句,重现Master的数据操作

如图:

linux安装mysql主从_linux安装MySQL主从同步(一主两从)搭建与配置_第2张图片

二、构建思路:

构建主从同步,基本构建思路:

1、确保数据相同

– 从库必须要有主库上的数据。

2、配置主服务器

– 启用 binlog 日志及设置格式,设置 server_id, 授权用户

3、配置从服务器

– 设置 server_id ,指定主数据库服务器信息

4、测试配置

– 客户端连接主库,写入的数据,在连接从库的时候也确保数据一致。

三、开始搭建:

主从同步结构模式

基本应用:

— 单项复制:一主一从

1、Master服务器

– 应包括希望同步的所有库

写在主库配置文件里参数(对所有从库都有效)

binlog_do_db=库名列表 //允许同步的库

binlog_ignore_db=库名列表 //不允许同步的库

主库配置选项

781cc251e10a76e52ab4fd7ce15413d5.png

2、Slave 服务器

– 离线导入由 Master 提供的备份

– 清空同名库

写在从库配置文件里参数(只针对从库本机有效)

replicate_do_db=库名列表 //指定只同步的库

replicate_ignore_db=库名列表 //指定不同步的库

从库配置选项

linux安装mysql主从_linux安装MySQL主从同步(一主两从)搭建与配置_第3张图片

1)、主库:192.168.1.1

启用 binlog 日志及设置格式,设置 server_id

[root@mysql51 ~]# vim /etc/my.cnf

[mysqld]

server_id=11

log_bin=mysql11 //binlog日志文件名称

binlog_format="mixed" //日志文件格式

[root@mysql51 ~]# systemctl restart mysqld

[root@mysql51 ~]# ls /var/lib/mysql/mysql11*

授权用户

[root@mysql51 ~]# mysql -hip -uroot -ppasswd -Pport

mysql> grant replication slave on *.* to repluser@"%" identified by "passwd";

mysql> select host,user from mysql.user where user='repluser';

mysql> show master status; //查看使用的日志文件及偏移量

2)、从库:192.168.1.2

[root@mysql2 ~]# vim /etc/my.cnf

[mysqld]

server_id=2

[root@mysql2 ~]# systemctl restart mysqld

[root@mysql2 ~]# mysql -hip -uroot -ppasswd

mysql> show master status;

mysql> change master to master_host='192.168.4.1', //主库ip地址

-> master_user='repluser', //出库授权用户名

-> master_password='passwd', //授权用户密码

-> master_log_file='mysql1.000001',//日志文件

-> master_log_pos=1;//偏移文件

mysql> start slave; //启动salve进程

mysql> show slave status\G; //查看slave状态

Slave_IO_Running: Yes //IO线程状态

Slave_SQL_Running: Yes//SQL线程状态

如果 Slave_IO_Running为NO,查看下面Last_IO_Error: Fatal error:的报错信息

[root@mysql2 mysql]# vim auto.cnf //此配置文件查看sql数据库的uuid

从服务器相关文件

linux安装mysql主从_linux安装MySQL主从同步(一主两从)搭建与配置_第4张图片

测试主从同步配置:在及客户端主机连接主机1对数据库做访问

• 在 Master 上操纵数据

– 新建 newdb 库、 newtbl 表

– 任意插入几条表记录

• 在 Slave 上查看数据更改情况

– 确认新建的 newdb 库、 newtbl 表

– 列出 newtbl 表的所有记录

在主库1上添加授权用户给客户端主机连接使用

mysql> create  database db1;

mysql> create table db1.a(id int);

mysql> grant select,insert,update on db1.* to admin@"%" identified by "passwd";

在客户端主机连接主库服务器1,对记录做访问

[root@client0 ~]# mysql -uroot -h192.168.1.1 -ppasswd

mysql> select @@hostname;

mysql> insert into db1.a values(111),(1231),(324);

mysql> select * from db1.a;

再从库服务器2本机也能查看到相同的数据为成功

[root@mysql2 mysql]# mysql -u root -ppasswd

mysql> select * from db1.a;

【一主两从 同步结构配置】

把数据库服务器3 也配置为1的从数据库服务器

主库主机1 已经是主数据库服务器,无需再做配置

配置从库3

与主库数据一致(把主库数据的完全备份拷贝到本机执行恢复)

[root@mysql1 ~]# mysqldump -hip -uroot -ppasswd --single-transaction --master-data=1 --databases db1 > /root/db1.sql

[root@mysql1 ~]# scp db1.sql 192.168.1.3:/root/

[root@mysql3 ~]# mysql -u root -ppasswd

mysql> create database db1;

mysql> use db1;

mysql> source /root/db1.sql;

mysql> select * from db1.a;

[root@mysql3 ~]# vim /etc/my.cnf

[mysqld]

server_id=3

[root@mysql3 ~]# systemctl restart mysqld

检测授权用户能否连接数据库

[root@mysql3 ~]# mysql -h192.168.1.1 -urepluser -ppasswd

数据管理员指定主库数据信息

[root@mysql3 ~]# mysql -hip -uroot -ppasswd

mysql> change master to

-> master_host='192.168.1.1',

-> master_user='repluser',

-> master_password='passwd',

-> master_log_file='mysql1.000001',

-> master_log_pos=1337;

master_log_pos=1337:从51主机上执行sql命令mysql> show master status;获取

查看slave程序的状态信息

mysql> start slave;

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

测试

客户端0连接主机1写入的数据在从库2和3主机上也能查看到数据,即成功

[root@client0 ~]# mysql -hip -uadmin -h192.168.1.1 -ppasswd

mysql> insert into db1.a values(66066);

从库1和2主机:登入数据库,执行mysql> select * from db1.a;查看是否有插入的数据

如果有,那么就可以了,搭建完成

你可能感兴趣的:(linux安装mysql主从)