简介
主从复制就是有两台数据库,一台作为主库,一台作为从库,从库会根据主库的binlog将数据复制过来,从而达到主从数据库数据保持一致的效果。主要用途如下:
起到备份数据的作用,主库出现问题,从库还能有数据,不至于数据丢失。主从的架构可以做读写分离,主库写,从库读,分摊数据库压力,提高效率。环境准备
本次只用两台虚拟机演示主从复制,从库可以有多个。
操作系统Centos7,数据库mysql5.7
CentOS7安装Mysql5.7教程
ip
角色
192.168.32.132
主库
192.168.32.133
从库
主库配置打开主库mysql配置文件
vim /etc/my.cnf
增加如下配置
#主从之间保证唯一即可,一般都是用ip最有一位
server_id=1
#开启binlog,binlog 日志件会以my-bin作为前缀
log-bin=my-bin
#只记录指定数据库的二进制日志,默认全部记录
binlog-do-db=TestDB
#不复制数据库系统自带的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#忽略错误,如1062主键冲突,当在从库插入数据后又在主库插入数据,之后同步会出错
#可以给用户授予最小的权限,避免这个问题
slave_skip_errors=1062
主库MySQL配置
重启mysql
systemctl restart mysqld
创建测试数据库并插入测试数据
CREATE DATABASE `TestDB` DEFAULT CHARACTER
SET utf8mb4 COLLATE utf8mb4_general_ci;
USE `TestDB`;
CREATE TABLE `User` (
`Id` BIGINT ( 20 ) NOT NULL AUTO_INCREMENT,
`Name` VARCHAR ( 255 ) CHARACTER
SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY ( `Id` ) USING BTREE
) ENGINE = INNODB AUTO_INCREMENT = 1 CHARACTER
SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `User`(`Name`)
VALUES
( '张三' ),(
'李四')

测试数据库
备份数据库用于初始化从库,保证主从数据库起始状态一致
由于测试数据库比较简单mssql复制,数据较少,可以直接在从库上执行上面的创建测试库语句也是一样的
mysqldump - u root - p --d atabases TestDB > TestDB.SQL
登录mysql查看master状态
SHOW MASTER STATUS;
File 为binlog的文件名,用于从库配置文件
Position 的值用于从库配置从哪个位置开始同步

主库状态
从库配置还原备份的主库数据库
也可执行主库的建库建表插入数据语句
打开主库mysql配置文件
vim /etc/my.cnf
增加如下配置
#主从之间保证唯一即可,一般都是用ip最有一位
server-id=2
#只读
read_only=1
mysql从库配置
重启mysql
systemctl restart mysqld
登录从库执行命令连接主库
CHANGE MASTER TO
master_host='192.168.32.132',
master_user='root',
master_password='123qwe',
master_port=3306,
master_log_file='my-bin.000001',
master_log_pos=6906,
master_connect_retry=30;
master_log_file:主库binlog文件名
master_log_pos:从主库binlog哪个位置开始同步
启动主从同步
START SLAVE;
查看从库状态
SHOW SLAVE STATUS
Slave_IO_Running:YES
Slave_IO_Running:YES 这两个值为yes说明主从配置成功

测试主从同步主库插入数据
INSERT INTO `User`(`Name`)
VALUES
( '王五' ),(
'赵六');
从库也会出现这两条数据
(编辑:92站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|