主从复制原理及数据库搭建

主从同步原理:就是当主库当中有数据更新时,它会把这个数据存到主库的二进制文件里面,然后从库去拷贝二进制文件到自己的中继日志里面,将主库里面的数据拷贝,进行同步更新。

搭建主库:

(1)克隆一台服务器。修改机器名和ip映射,固定ip和安全机制。然后重启服务器。

(2) 

//创建data,mysql,master01 文件
mkdir /data/mysql/master01 -p
//进入这些文件
cd /data/mysql/master01
mkdir cong data
然后cd.. 返回上一个目录 -R 包括父目录和子目录
chmod 777 * -R

 

 3 创建配置文件

cd /data/mysql/master01/conf
vim my.cnf
//这里你也可以使用 vi命令进入这个文件
//如果不想用的话,你也可以去下载 vim 这个命令 vim跟vi是一样的用法,它是vi 的一个扩展的文本编辑器
//下载命令 
yum install vim
进入这个文件之后,配置集群参数
[mysqld]
log-bin = mysql-bin
#指定主库 serverid
server-id=1
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISI
ON_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 
//记得把空格去掉

4 创建容器

看一下你的这个虚拟机里面有没有docker 容器,如果没有就下载一个docker容器

安装新版Docker
1 使用curl升级到最新版
curl -fsSL https://get.docker.com/ | sh
2 重启Docker
systemctl restart docker
3设置Docker开机自启
systemctl enable docker
4测试Docker 版本
docker --version
5 上传daemon.json到/etc/docker中
6重启docker
service docker restart

5 创建容器

docker create --name percona-master01 -v /data/mysql/master01/data:/var/lib/mysql -v
/data/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root
percona:5.7.23

6 启动

docker start percona-master01 && docker logs -f percona-master01

打开Navicat数据库连接

选中你的数据库右击--选中命令列面

create user 'kgc'@'%' identified by 'kgc';
grant replication slave on *.* to 'kgc'@'%'; //都能访问主库的kgc用户
flush privileges; //使配置有效

7 重新启动

docker restart percona-master01 && docker logs -f percona-master01

8 查看master状态

show master status;

 

 9 查看二进制日志相关的配置项

show global variables like 'binlog%';

10 查看server 日志的相关配置项

show global variables like 'server%';

如果你的这些日志里面都没有内容,那就说明你的环境搭建是有问题的。

搭建从库

还是在主库的基础上去搭建从库

1 创建目录
mkdir /data/mysql/slave01
cd /data/mysql/slave01
mkdir conf data
chomd 777 * -R
2 创建配置文件
cd /data/mysql/slave01/conf
vim my.cnf
3 输入一下内容
[mysqld]
server-id=2 #服务 id,不可重复
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_B
Y_ZERO ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
4 创建容器(如果没有docker容器的话,要去创建docker容器)
docker create --name percona-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v
/data/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root
percona:5.7.23
5 启动
docker start percona-slave01 && docker logs -f percona-slave01
6 连接数据库。设置master的相关信息
配置模式

set sql_mode = '';
set sql_mode = 'NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';

 

 

 在查询窗口中输入 下面配置信息

CHANGE MASTER TO
master_host='192.168.115.188', //主库的ip地址(主库和从库是同一个ip地址)
//下面的都是主库的信息 ,因为要跟主库进行一个关联
master_user='kgc',
 master_password='kgc',
 master_port=3306, 
master_log_file='mysql-bin.000002', //主库的二进制文件信息
 master_log_pos=648; //主库的二进制文件在数据库中的偏移量
启动同步
start slave;
查看master状态
show slave status
测试 Slave_IO_Running:Yes Slave_SQL_Running:Yes 必须要这两个列的值为yes才可以

 

 

主从同步: 当我在主库中添加数据时,子库中的数据和主库中的时候,实时保持一致

(主从同步,用来备份数据,提高安全性)

 

posted @ 2022-04-13 21:44  秃头少女and战战  阅读(66)  评论(0编辑  收藏  举报