这篇文章只是让大家了解一下mysql的主从复制,并且实现了一个案例
但是这个案例不是典型的案例
后面会在写其他的配置方法主从复制解决的问题
- 数据分布
- 负载均衡
- 备份
- 高可用和故障切换
在这个案例中,我们只实现了备份 。其他几个点,我们后边一个一个实现,就不写概念了
这里写的只是简单的实现过程,具体细节是很麻烦的,建议大家都去了解了解
这是使用docker安装MySQL的流程
这里我们假定大部分配置采用默认值即可,在主库和备库都是全新
安装并且拥有同样的数据时这样的假设是合理的。接下来我们将展示如何一步步配置复制:假设有服务
器server1(IP地址172.10.0.2)和服务器server2(IP地址172.10.0.3)
分别执行下面语句,这俩个语句分别是创建mysql_slave 和 mysql_slave1的容器
docker run -itd --name mysql-slave -p 3307:3306 --net mynetwork --ip 172.10.0.3 -e MYSQL_ROOT_PASSWORD=123456 mysqldocker run -itd --name mysql-slave1 -p 3308:3306 --net mynetwork --ip 172.10.0.4 -e MYSQL_ROOT_PASSWORD=123456 mysql

可以看到我们现在创建了三个MySQL的容器
- 第一个是mysql-master
- 第二个是mysql-slave
- 第三个是mysql-slave1
然后三台节点都进入到各自的容器里
docker exec -it id /bin/bash
创建账号
# 创建一个账号CREATE USER 'master'@'172.10.0.%' IDENTIFIED WITH mysql_native_password BY '123456';# 给予复制权限GRANT REPLICATION SLAVE ON *.* TO 'master'@'172.10.0.%';
修改主节点和从节点的配置文件在/etc.mysql/my.cnf
添加
server-id=1
这个server_id 主机跟从机的值坚决不可以一样 一般这个值是根据ip地址的后几位来确定

授权给从节点
CHANGE MASTER TOMASTER_HOST='172.10.0.2',MASTER_USER='master',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000002',MASTER_LOG_POS=0;
然后查看主从同步状态
Slave_IO_State、Slave_IO_Running和Slave_SQL_Running这三列
显示当前备库复制尚未运行。

开启主从复制
# 开启主从同步start slave# 停止主从复制stop slave
然后在查看一下主从同步状态
先给master创建一个数据库 kaka_test_master_slave
create datebase kaka_test_master_slave;

然后查看mysql_slave的数据库看有没有创建出来kaka_test_master_slave这个数据库

创建表和添加测试数据
CREATE TABLE IF NOT EXISTS `phone` (`phoneid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,`card` INT(10) UNSIGNED NOT NULL,PRIMARY KEY (phoneid));INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20)));INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20)));INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20)));INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20)));INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20))); IINSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20)));


查看mysql_slave的数据状态
数据一切正常


Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号