Linux(Centos7.6)
1. Mysql(5.7.32.0)单体服务实现数据备份
1.1 在Linux上安装Mysql服务
1.1.1 先检查Linux已经安装了mysql
rpm -qa|grep mysql
空白说明没有安装mysql
1.1.2 查询Linux是否带有玛利亚数据库有则删除,删除etc目录下的my.cnf
rpm -qa|grep mari
rpm -e --nodeps mariadb-libs
rpm -e --nodeps marisa
2.删除etc目录下的my.cnf ,一定要删掉,等下再重新建,之前我将就用这个文件,后面改配置各种不生效,没有my.cnf文件,没有执行可命令
rm /etc/my.cnf
1.1.3 检查有无安装过mysql 用户组,没有的话创建
1.检查mysql 用户组是否存在
cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
2.创建mysql 用户组和用户
groupadd mysql
useradd -r -g mysql mysql
1.1.4 新建文件夹 /data/program,/data/software,/data/work,/data/lost+found, 并cd进入
mkdir /data
mkdir /data/program
mkdir /data/software
mkdir /data/work
mkdir /data/lost+found
cd /data/software
1.1.5 下载mysql-5.7.32-1.el7.x86_64.rpm-bundle
https://downloads.mysql.com/archives/community/ 注意:下载的文件为.tar后缀名,lz将这个文件先在Linux中解压了一道生成了tar.gz后缀的文件 再将次文件转移到Windows,然后将Linux中的两个文件删除,再从Windows将tar.gz后缀的文件转移到Linux中方便演示 使用xftp7上传安装到/data/software
1.1.6 解压文件mysql-5.7.32-1.el7.x86_64.rpm-bundle到/data/program
tar -zvxf mysql-5.7.32-linux-glibc2.12-x86_64.tar -C /data/program
1.1.7 修改文件名及其权限
1.修改文件名
cd /data/program
mv mysql-5.7.32-linux-glibc2.12-x86_64/ mysql-5.7.32
2.更改mysql5.7 目录下所有文件夹所属的用户组、用户以及权限
chown -R mysql:mysql /data/program/mysql-5.7.32
chmod -R 777 /data/program/mysql-5.7.32
3.进入/data/program/mysql-5.7.32/bin目录
cd /data/program/mysql-5.7.32/bin
1.1.8 编译安装并初始化mysql(初始化时会初始化一个密码务必记住红框中的密码)
./mysqld --initialize --user=mysql --datadir=/data/program/mysql-5.7.32/data --basedir=/data/program/mysql-5.7.32
1.1.9 编写etc目录下的my.cnf 配置文件,并添加配置
vi /etc/my.cnf
#下面为文件具体内容
[mysqld]
datadir=/data/program/mysql-5.7.32
datadir=/data/program/mysql-5.7.32/data
#socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/data/program/mysql-5.7.32/data/mysql.log
pid-file=/data/program/mysql-5.7.32/data/mysql.pid
[client]
port=3306
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
2.授予my.cnf 配置文件775权限
chmod -R 775 /etc/my.cnf
3.修改 /data/program/mysql-5.7.32/support-files/ 目录下的mysql.server文件,如下图中5个位置的 /usr/local/mysql 全部修改成 /data/program/mysql-5.7.32,因为没有安装下 /usr/local/mysq 目录下,所以需要修改安装的 /data/program/mysql-5.7.32 目录
1.1.10 启动mysql 服务器
1.查询服务
ps -ef|grep mysql
ps -ef|grep mysqld
2.创建 my.cnf.d目录
mkdir /etc/my.cnf.d/
3.启动服务
/data/program/mysql-5.7.32/support-files/mysql.server start
4.建立链接 1.由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/data/server/mysql-5.7.33/bin/mysql,我们则可以这样执行命令:
ln -s /data/program/mysql-5.7.32/bin/mysql /usr/bin
1.1.11 登录Mysql,设置Mysql相关设置
1.登录mysql ,密码就是初始化时生成的临时密码,修改密码为java123456
mysql -uroot -p
set password for root@localhost = password('java123456');
2.开放远程连接
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
3.设置开机自启
//将服务文件拷贝到init.d下,并重命名为mysql
cp /data/program/mysql-5.7.32/support-files/mysql.server /etc/init.d/mysqld
//赋予可执行权限
chmod +x /etc/init.d/mysqld
//添加服务
chkconfig --add mysqld
//显示服务列表
chkconfig --list
4.开放3306端口,测试本地客户端是否连接成功
//开放3306端口命令
firewall-cmd --zone=public --add-port=3306/tcp --permanent
//配置立即生效
firewall-cmd --reload
1.2 完全备份一个或多个完整的库(包括其中所有的表)(手动操作)
1.2.1 备份数据库到某一个sql文件中
mysqldump -uroot -p[密码] --databases 库名1 [库名2] ... > /备份路径/备份文件名.sql
mysqldump -uroot -p --databases liu > /opt/kgc.sql #备份一个kgc库
mysqldump -uroot -p --databases mysql li > /opt/mysql-kgc.sql #备份mysql与 kgc两个库
mysqldump -uroot -p[密码] --all-databases > /备份路径/备份文件名.sql #备份所有的库
1.2.2 例如:备份Test数据库到 /data/program/mysql-5.7.32/data/fullbackup中
# 建立mysqldump命令的连接
ln -s /data/program/mysql-5.7.32/bin/mysqldump /usr/bin
mkdir /data/program/mysql-5.7.32/data/fullbackup
mysqldump -uroot -pjava123456 --databases test > /data/program/mysql-5.7.32/data/fullbackup/member-test.sql
1.2.3 模拟数据丢失并恢复数据
1.数据丢失
drop database test;
show databases;
2.恢复数据
source /data/program/mysql-5.7.32/data/fullbackup/member-test.sql
1.2.4 完全备份数据库中的表到某一个sql文件中
mysqldump -u root -p[密码] 库名 [表名1] [表名2] … > /备份路径/备份文件名.sql
如:
mysqldump -uroot -p[密码] [-d] HUISUO member1 > /opt/member1.sql
#使用“-d”选项,说明只保存数据库的表结构
#不使用“-d”选项,说明表数据也进行备份
1.2.5 例如:备份Test数据库中的backer_menu_tab到 /opt/member-backermenutab.sql中
mysqldump -u root -pjava123456 test backer_menu_tab > /data/program/mysql-5.7.32/data/fullbackup/member-backermenutab.sql
1.2.6 模拟数据库中的表的数据丢失并恢复数据
1.数据丢失
drop tables backer_menu_tab;
show tables;
2.数据恢复
source /data/program/mysql-5.7.32/data/fullbackup/member-backermenutab.sql
1.3 增量备份与恢复(手动操作)
1.3.1 增量备份需要开启二进制日志功能
mkdir /data/program/mysql-5.7.32/data/binarylog
cd /data/program/mysql-5.7.32/data/binarylog
vim /etc/my.cnf
log-bin=/data/program/mysql-5.7.32/data/binarylog/mysql-bin
server-id=1
binlog_format=ROW
expire_logs_days = 7 #保留七天的日志
#重启服务
systemctl restart mysql
1.3.2 先完成完全备份
# 建立mysqldump命令的连接
ln -s /data/program/mysql-5.7.32/bin/mysqldump /usr/bin
mysqldump -uroot -p [数据库] [表] > /mnt/meeting_working_$(date +%F).sql
mysqldump -uroot -p [数据库] > /mnt/meeting_$(date +%F).sql
# 建立mysqladmin命令的连接
ln -s /data/program/mysql-5.7.32/bin/mysqladmin /usr/bin
#生成二进制文件
mysqladmin -uroot -p flush-logs
每天进行增量备份操作,生成新的二进制日志文件(例如 mysql-bin.000001)
cd /data/program/mysql-5.7.32/data/binarylog
ll
1.3.3 插入新数据,以模拟数据的增加或更改
1.再次生成新的二进制日志文件(例如 mysql-bin.000002)
mysqladmin -u root -p flush-logs
ll
2.再次生成新的二进制日志文件(例如mysql -bin.000003)
##之前的的数据库操作会保存到mysql-bin.000002文件中,之后数据库数据再发生变化则保存在mysql-bin.00003文件中
mysqladmin -u root -p flush-logs
ll
1.3.4 删除新插入的数据再恢复
1.使用生成新的二进制日志文件mysql-bin.000001恢复数据
# 建立mysqlbinlog命令的连接
ln -s /data/program/mysql-5.7.32/bin/mysqlbinlog /usr/bin
mysqlbinlog --no-defaults /data/program/mysql-5.7.32/data/binarylog/mysql-bin.000001 | mysql -uroot -pjava123456
增量备份总结:
为什么选择mysql-bin.000001恢复数据,在表创建好,第一次数据插入之后,我们手动生成mysql-bin.000001文件,此时文件中会不断记录在生成文件之后数据库所发生的插入记录,由上面例子发现第二次插入数据60和61之后手动生成了mysql-bin.000002,所以mysql-bin.000001文件中只记录了60和61的数据插入,在生成了mysql-bin.000002文件之后又马上手动生成了mysql-bin.000003文件,所以mysql-bin.000002文件没有记录新增记录,而后发生的新增记录会存储在mysql-bin.000003文件,直到再次手动生成mysql-bin.000004文件,mysql-bin.000003文件就不会再记录新增记录。如果再插入数据63,新增记录63会存储在mysql-bin.000003文件中,再次手动生成mysql-bin.000004文件,mysql-bin.000003文件就不会再记录新增记录。如果60,61,63数据全部丢失不能直接用mysql-bin.000003恢复这会导致错误,必须从储存了新增数据60,61的mysql-bin.00000X的文件开始一个一个往后恢复,这里我们选择从mysql-bin.000001文件->mysql-bin.000002文件->mysql-bin.000003文件
1.4 完全备份一个或多个完整的库(定时任务)
1.4.1 在/root/script下创建test_db_fullbackup.sh脚本
mkdir /root/script
cd /root/script
[root@mysql ~] vim test_db_fullbackup.sh
#!/bin/sh
# Name:test_db_fullbackup.sh
# 定义数据库目录
mysqlDir=/data/program/mysql-5.7.32
# 定义用于备份数据库的用户名和密码
user=root
userpwd=java123456
dbname=test
# 定义备份目录
databackupdir=/data/program/mysql-5.7.32/data/fullbackup
[ ! -d $databackupdir ] && mkdir $databackupdir
# 定义邮件正文文件
emailfile=$databackupdir/email.txt
# 定义邮件地址
email=root@localhost.localdomain
# 定义备份日志文件
logfile=$databackupdir/mysqlbackup.log
DATE=`date -I`
echo "" > $emailfile
echo $(date +"%y-%m-%d %H:%M:%S") >> $emailfile
cd $databackupdir
# 定义备份文件名
dumpfile=mysql_${dbname}_${DATE}.sql
gzdumpfile=mysql_${dbname}_${DATE}.sql.tar.gz
# 使用mysqldump备份数据库,请根据具体情况设置参数
$mysqlDir/bin/mysqldump -u$user -p$userpwd --flush-logs -x $dbname > $dumpfile
# 压缩备份文件
if [ $? -eq 0 ]; then
tar czf $gzdumpfile $dumpfile >> $emailfile 2>&1
echo "BackupFileName:$gzdumpfile" >> $emailfile
echo "DataBase Backup Success!" >> $emailfile
rm -f $dumpfile
else
echo "DataBase Backup Fail!" >> $emailfile
fi
# 写日志文件
echo "--------------------------------------------------------" >> $logfile
cat $emailfile >> $logfile
# 发送邮件通知
cat $emailfile | mail -s "MySQL Backup" $email
1.4.2 添加定时任务
#给脚本文件加权限
chmod 777 /root/script/test_db_fullbackup.sh
#安装crontab
yum install crontabs
#每12个小时执行一次
crontab -e
* 0 */12 * * * root /root/script/test_db_fullbackup.sh >/dev/null 2>&1
1.4.3 启动定时任务
systemctl start crond.service
1.5 增量备份(定时任务)
1.5.1 在/root/script下创建test_db_incrementalbackup.sh脚本
mkdir /root/script
cd /root/script
vim test_db_incrementalbackup.sh
#!/bin/sh
# Name:mysqlDailyBackup.sh
# 定义数据库目录和数据目录
mysqldir=/data/program/mysql-5.7.32
datadir=$mysqldir/data/binarylog
# 定义用于备份数据库的用户名和密码
user=root
userpwd=java123456
# 定义备份目录,每日备份文件备份到$dataBackupDir/daily
databackupdir=/data/program/mysql-5.7.32/data/binarylog
dailybackupdir=$databackupdir/daily
[ ! -d $dailybackupdir ] && mkdir -p $databackupdir/daily
# 定义邮件正文文件
emailfile=$databackupdir/email.txt
# 定义邮件地址
email=root@localhost.localdomain
# 定义日志文件
logfile=$databackupdir/mysqlbackup.log
echo "" > $emailfile
echo $(date +"%y-%m-%d %H:%M:%S") >> $emailfile
#
# 刷新日志,使数据库使用新的二进制日志文件
$mysqldir/bin/mysqladmin -u$user -p$userpwd flush-logs
cd $datadir
# 得到二进制日志列表
filelist=`cat mysql-bin.index`
icounter=0
for file in $filelist
do
icounter=`expr $icounter + 1`
done
nextnum=0
ifile=0
for file in $filelist
do
binlogname=`basename $file`
nextnum=`expr $nextnum + 1`
# 跳过最后一个二进制日志(数据库当前使用的二进制日志文件)
if [ $nextnum -eq $icounter ]; then
echo "Skip lastest!" > /dev/null
else
dest=$dailybackupdir/$binlogname
# 跳过已经备份的二进制日志文件
if [ -e $dest ]; then
echo "Skip exist $binlogname!" > /dev/null
else
# 备份日志文件到备份目录
cp $binlogname $dailybackupdir
if [ $? -eq 0 ]; then
ifile=`expr $ifile + 1`
echo "$binlogname backup success!" >> $emailfile
fi
fi
fi
done
if [ $ifile -eq 0 ];then
echo "No Binlog Backup!" >> $emailfile
else
echo "Backup $ifile File(s)." >> $emailfile
echo "Backup MySQL Binlog OK!" >> $emailfile
fi
# 发送邮件通知
cat $emailfile | mail -s "MySQL Backup" $email
# 写日志文件
echo "--------------------------------------------------------" >> $logfile
cat $emailfile >> $logfile
#删除七天之前的文件
find /data/program/mysql-5.7.32/data/binarylog -mtime +7 -name "*.*" -exec rm -Rf {} \;
1.5.2 添加定时任务
#给脚本文件加权限
chmod 777 /root/script/test_db_incrementalbackup.sh
#安装crontab
yum install crontabs
#每2个小时执行一次
crontab -e
* 0 */2 * * * root /root/script/test_db_fullbackup.sh >/dev/null 2>&1
1.5.3 启动定时任务
systemctl start crond.service
2.Mysql(5.7.32.0)主从复制
2.1 Docker 安装模拟 MySQL 主从复制集群
2.1.1 CentOS(7.6)安装Docker
1.卸载之前的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
2.安装docker
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
3.然后更新本地镜像源
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
4.然后输入命令
yum install -y docker-ce
2.1.2 启动docker
1.启动docker前,一定要关闭防火墙后!!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
#查看是否关闭防火墙
systemctl status firewalld
2.通过命令启动docker:
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
当出现active(running)时,即为启动成功,如图:
3.输入命令,可以查看docker版本
docker -v
2.1.3 配置镜像加速
1.通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://kijci2ba.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.1.4 Docker 安装模拟 MySQL 主从复制集
1.下载 mysql 镜像
docker pull mysql:5.7
创建 Master 实例并启动
docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql/master/log:/var/log/mysql \
-v /mydata/mysql/master/data:/var/lib/mysql \
-v /mydata/mysql/master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
3.修改 master 基本配置
vim /mydata/mysql/master/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
注意: skip-name-resolve 一定要加, 不然连接 mysql 会超级慢 4.添加 master 主从复制部分配置
#为my.cnf写入一下配置
server_id=1 #指定集群id
log-bin=mysql-bin #打开二进制日志功能
read-only=0 #关闭只读,可读可写
binlog-do-db=gulimall_ums #指定mysql的binlog日志记录哪个db
binlog-do-db=gulimall_pms
binlog-do-db=gulimall_oms
binlog-do-db=gulimall_sms
binlog-do-db=gulimall_wms
binlog-do-db=gulimall_admin
replicate-ignore-db=mysql #用来设置不需要同步的库,此处指定的mysql系统库
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
5.重启master
docker restart mysql-master
6.创建 Slaver-01实例并启动
docker run -p 3317:3306 --name mysql-slaver-01 \
-v /mydata/mysql/slaver/log:/var/log/mysql \
-v /mydata/mysql/slaver/data:/var/lib/mysql \
-v /mydata/mysql/slaver/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
7.修改 slaver-01基本配置
vim /mydata/mysql/slaver/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
8.添加 slaver-01 主从复制部分配置
vim /mydata/mysql/slaver/conf/my.cnf
server_id=2 #注意此处id不能与主节点相同
log-bin=mysql-bin
#是否只读,1 代表只读,0 代表读写
read-only=1
#binlog-do-db配置了哪些数据库需要主从复制
binlog-do-db=gulimall_ums
binlog-do-db=gulimall_pms
binlog-do-db=gulimall_oms
binlog-do-db=gulimall_sms
binlog-do-db=gulimall_wms
binlog-do-db=gulimall_admin
binlog-do-db=Test
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
9.重启slaver-01
docker restart mysql-slaver-01
10.Docker 服务器、Mysql容器设置自动启动
查看已启动的服务
systemctl list-units --type=service
查看是否设置开机启动
systemctl list-unit-files | grep enable
设置开机启动
systemctl enable docker.service
关闭开机启动
systemctl disable docker.service
#查看docker是否设置开机启动
systemctl list-unit-files | grep enable | grep docker
#设置启动docker时,mysql自启动
docker update mysql-slaver-01 --restart=always
docker update mysql-master --restart=always
11.为 master 授权用户来他的同步数据 (1)进入docker容器
docker exec -it mysql-master /bin/bash
(2) 进入mysql内部
mysql –uroot -p
Enter password:root
(3) 授权 root 可以远程访问
#授权
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
#刷新权限
flush privileges;
(4) 添加用来同步的用户
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';
#backup为账号名,
#123456为账号密码
(5) 查看master状态 12.为 slaver-01授权用户来他的同步数据 (1) 进入docker容器
docker exec -it mysql-slaver-01 /bin/bash
(2) 进入mysql内部
mysql –uroot -p
Enter password:root
(3) 授权 root 可以远程访问
#授权
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
#刷新权限
flush privileges;
(4) 设置主库连接
change master to master_host='192.168.200.128',master_user='backup',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=0,master_port=3307;
#master_host:主节点虚拟机ip
#master_user:用于连接主机的集群账号
#master_password:用于连接主机的集群密码
#master_log_file必须与2.1.4.11 (5)的File字段一致,Position不用一致后面会自动同步
(5) 启用主从同步
start slave;
(6) 查看从库状态
#slaver01的端口号为docker run -p 3317:3306 --name mysql-slaver-01 \ 创建实例中的3317
show slave status
2.1.5 主从同步测试
1.主节点新建数据库gulimall_admin,从机刷新后也有相同数据库,只要此处同步其实就代表成功了 2.在主节点执行下面文件
DROP TABLE IF EXISTS `backer_menu_tab`;
CREATE TABLE `backer_menu_tab` (
`menu_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限Id',
`parent_id` int(11) NOT NULL COMMENT '父级权限Id,第一级权限值为0',
`menu_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '权限名称',
`menu_sign` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '权限标识符',
`menu_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限路径',
`add_time` datetime(0) NOT NULL COMMENT '添加时间',
PRIMARY KEY (`menu_id`) USING BTREE,
UNIQUE INDEX `menu_sign`(`menu_sign`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of backer_menu_tab
-- ----------------------------
INSERT INTO `backer_menu_tab` VALUES (1, 0, '报警模块', 'alarm', '/alarm', '2023-03-26 20:46:17');
INSERT INTO `backer_menu_tab` VALUES (2, 0, '管理员模块', 'backer', '/backer', '2023-03-26 20:47:19');
INSERT INTO `backer_menu_tab` VALUES (3, 0, '设备模块', 'device', '/device', '2023-03-26 20:47:48');
INSERT INTO `backer_menu_tab` VALUES (4, 0, '记录模块', 'log', '/log', '2023-03-26 20:48:12');
INSERT INTO `backer_menu_tab` VALUES (5, 1, '报警模块-报警记录', 'alarm-1', '/alarm/alarm', '2023-03-26 20:48:50');
INSERT INTO `backer_menu_tab` VALUES (6, 5, '报警模块-报警记录-清理设备线路异常', 'alarm-1-1', '/alarm/alarm/handle', '2023-03-26 20:49:15');
INSERT INTO `backer_menu_tab` VALUES (7, 5, '报警模块-报警记录-清理设备全部异常', 'alarm-1-2', '/alarm/alarm/handleByDeviceId', '2023-03-26 20:49:40');
INSERT INTO `backer_menu_tab` VALUES (8, 5, '报警模块-报警记录-查询设备警报条数', 'alarm-1-3', '/alarm/alarm/countAlarm', '2023-03-26 20:50:06');
INSERT INTO `backer_menu_tab` VALUES (9, 5, '报警模块-报警记录-获取报警记录', 'alarm-1-4', '/alarm/alarm/getById', '2023-03-26 20:50:22');
INSERT INTO `backer_menu_tab` VALUES (10, 5, '报警模块-报警记录-获取所有报警记录', 'alarm-1-5', '/alarm/alarm/listAll', '2023-03-26 20:50:39');
INSERT INTO `backer_menu_tab` VALUES (11, 5, '报警模块-报警记录-导出记录', 'alarm-1-6', '/alarm/alarm/export', '2023-03-26 20:50:57');
INSERT INTO `backer_menu_tab` VALUES (12, 5, '报警模块-报警记录-获取设备所有线路运行状态', 'alarm-1-7', '/alarm/alarm/listDeviceLine', '2023-03-26 20:51:16');
INSERT INTO `backer_menu_tab` VALUES (13, 1, '报警模块-短信通知记录', 'alarm-2', '/alarm/message', '2023-03-26 20:51:47');
INSERT INTO `backer_menu_tab` VALUES (14, 13, '报警模块-短信通知记录-获取所有短信通知记录', 'alarm-2-1', '/alarm/message/list', '2023-03-26 20:52:01');
INSERT INTO `backer_menu_tab` VALUES (15, 1, '报警模块-短信通知人员', 'alarm-3', '/alarm/messagePerson', '2023-03-26 20:52:33');
INSERT INTO `backer_menu_tab` VALUES (16, 15, '报警模块-短信通知人员-新增短信通知人员', 'alarm-3-1', '/alarm/messagePerson/create', '2023-03-26 20:52:49');
INSERT INTO `backer_menu_tab` VALUES (17, 15, '报警模块-短信通知人员-删除短信通知人员', 'alarm-3-2', '/alarm/messagePerson/delete', '2023-03-26 20:53:06');
INSERT INTO `backer_menu_tab` VALUES (18, 15, '报警模块-短信通知人员-查询所有短信通知人员', 'alarm-3-3', '/alarm/messagePerson/list', '2023-03-26 20:53:26');
INSERT INTO `backer_menu_tab` VALUES (19, 2, '管理员模块-管理员管理', 'backer-1', '/backer/backer', '2023-03-26 20:53:58');
INSERT INTO `backer_menu_tab` VALUES (20, 19, '管理员模块-管理员管理-管理员列表', 'backer-1-1', '/backer/backer/list', '2023-03-26 20:54:17');
INSERT INTO `backer_menu_tab` VALUES (21, 19, '管理员模块-管理员管理-创建管理员', 'backer-1-2', '/backer/backer/create', '2023-03-26 20:54:41');
INSERT INTO `backer_menu_tab` VALUES (22, 19, '管理员模块-管理员管理-修改管理员', 'backer-1-3', '/backer/backer/modify', '2023-03-26 20:54:54');
INSERT INTO `backer_menu_tab` VALUES (23, 19, '管理员模块-管理员管理-管理员详情', 'backer-1-4', '/backer/backer/info', '2023-03-26 20:55:11');
INSERT INTO `backer_menu_tab` VALUES (24, 19, '管理员模块-管理员管理-修改管理员状态', 'backer-1-5', '/backer/backer/modifyStatus', '2023-03-26 20:55:27');
INSERT INTO `backer_menu_tab` VALUES (25, 19, '管理员模块-管理员管理-修改管理员密码', 'backer-1-6', '/backer/backer/modifyPwd', '2023-03-26 20:55:40');
INSERT INTO `backer_menu_tab` VALUES (26, 19, '管理员模块-管理员管理-重置管理员密码', 'backer-1-7', '/backer/backer/resetPwd', '2023-03-26 20:55:56');
INSERT INTO `backer_menu_tab` VALUES (27, 2, '管理员模块-权限菜单管理', 'backer-2', '/backer/menu', '2023-03-26 20:56:21');
INSERT INTO `backer_menu_tab` VALUES (28, 27, '管理员模块-权限菜单管理-查询角色的权限', 'backer-2-1', '/backer/menu/getRoleMenuInfo', '2023-03-26 20:56:38');
INSERT INTO `backer_menu_tab` VALUES (29, 27, '管理员模块-权限菜单管理-查询所有权限', 'backer-2-2', '/backer/menu/listAll', '2023-03-26 20:56:55');
INSERT INTO `backer_menu_tab` VALUES (30, 2, '管理员模块-角色管理', 'backer-3', '/backer/role', '2023-03-26 20:57:22');
INSERT INTO `backer_menu_tab` VALUES (31, 30, '管理员模块-角色管理-创建角色', 'backer-3-1', '/backer/role/create', '2023-03-26 20:57:40');
INSERT INTO `backer_menu_tab` VALUES (32, 30, '管理员模块-角色管理-修改角色', 'backer-3-2', '/backer/role/modify', '2023-03-26 20:57:58');
INSERT INTO `backer_menu_tab` VALUES (33, 30, '管理员模块-角色管理-修改角色状态', 'backer-3-3', '/backer/role/modifyStatus', '2023-03-26 20:58:14');
INSERT INTO `backer_menu_tab` VALUES (34, 30, '管理员模块-角色管理-删除角色', 'backer-3-4', '/backer/role/delete', '2023-03-26 20:58:36');
INSERT INTO `backer_menu_tab` VALUES (35, 30, '管理员模块-角色管理-角色列表', 'backer-3-5', '/backer/role/listAll', '2023-03-26 20:58:50');
INSERT INTO `backer_menu_tab` VALUES (36, 3, '设备模块-设备管理', 'device-1', '/device/device', '2023-03-26 20:59:25');
INSERT INTO `backer_menu_tab` VALUES (37, 36, '设备模块-设备管理-设备列表', 'device-1-1', '/device/device/list', '2023-03-26 20:59:44');
INSERT INTO `backer_menu_tab` VALUES (38, 36, '设备模块-设备管理-设备详情', 'device-1-2', '/device/device/info', '2023-03-26 20:59:57');
INSERT INTO `backer_menu_tab` VALUES (39, 36, '设备模块-设备管理-新增设备', 'device-1-3', '/device/device/add', '2023-03-26 21:00:11');
INSERT INTO `backer_menu_tab` VALUES (40, 36, '设备模块-设备管理-删除设备', 'device-1-4', '/device/device/delete', '2023-03-26 21:00:27');
INSERT INTO `backer_menu_tab` VALUES (41, 36, '设备模块-设备管理-修改设备名称', 'device-1-5', '/device/device/updateDeviceName', '2023-03-26 21:00:44');
INSERT INTO `backer_menu_tab` VALUES (42, 36, '设备模块-设备管理-修改管理模式为监控', 'device-1-6', '/device/device/updateManageModeToControl', '2023-03-26 21:00:57');
INSERT INTO `backer_menu_tab` VALUES (43, 36, '设备模块-设备管理-修改管理模式为全监控', 'device-1-7', '/device/device/updateManageModeToAll', '2023-03-26 21:01:12');
INSERT INTO `backer_menu_tab` VALUES (44, 36, '设备模块-设备管理-修改管理模式为单面监控', 'device-1-8', '/device/device/updateManageModeToSingle', '2023-03-26 21:01:23');
INSERT INTO `backer_menu_tab` VALUES (45, 36, '设备模块-设备管理-修改管理模式为自定义', 'device-1-9', '/device/device/updateManageModeToMyself', '2023-03-26 21:01:40');
INSERT INTO `backer_menu_tab` VALUES (46, 3, '设备模块-设备线路', 'device-2', '/device/line', '2023-03-26 21:01:59');
INSERT INTO `backer_menu_tab` VALUES (47, 46, '设备模块-设备线路-根据设备Id查询全部线路', 'device-2-1', '/device/line/list', '2023-03-26 21:02:14');
INSERT INTO `backer_menu_tab` VALUES (48, 46, '设备模块-设备线路-修改线路名称', 'device-2-2', '/device/line/updateLineName', '2023-03-26 21:02:28');
INSERT INTO `backer_menu_tab` VALUES (49, 46, '设备模块-设备线路-线路连通或关断', 'device-2-3', '/device/line/lineOnOff', '2023-03-26 21:02:41');
INSERT INTO `backer_menu_tab` VALUES (50, 46, '设备模块-设备线路-设备全部线路连通或关断', 'device-2-4', '/device/line/deviceOnOff', '2023-03-26 21:03:00');
INSERT INTO `backer_menu_tab` VALUES (51, 4, '记录模块-登录记录', 'log-1', '/log/login', '2023-03-26 21:03:44');
INSERT INTO `backer_menu_tab` VALUES (52, 51, '记录模块-登录记录-查询所有登录记录', 'log-1-1', '/log/login/list', '2023-03-26 21:03:57');
INSERT INTO `backer_menu_tab` VALUES (53, 4, '记录模块-操作记录', 'log-2', '/log/operate', '2023-03-26 21:04:17');
INSERT INTO `backer_menu_tab` VALUES (54, 53, '记录模块-操作记录-查询所有操作记录', 'log-2-1', '/log/operate/list', '2023-03-26 21:04:31');
SET FOREIGN_KEY_CHECKS = 1;
2.2 Mysql一主多从复制
2.2.1 创建 Slaver-02实例并启动
1.创建实例
docker run -p 3318:3306 --name mysql-slaver-02 \
-v /mydata/mysql/slaver02/log:/var/log/mysql \
-v /mydata/mysql/slaver02/data:/var/lib/mysql \
-v /mydata/mysql/slaver02/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
#设置启动docker时,mysql自启动
docker update mysql-slaver-02 --restart=always
2.修改 slaver-02基本配置
vim /mydata/mysql/slaver02/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
3.添加 slaver-02 主从复制部分配置
vim /mydata/mysql/slaver02/conf/my.cnf
server_id=3 #注意此处id不能与主节点相同
log-bin=mysql-bin
#是否只读,1 代表只读,0 代表读写
read-only=1
#binlog-do-db配置了哪些数据库需要主从复制
binlog-do-db=gulimall_ums
binlog-do-db=gulimall_pms
binlog-do-db=gulimall_oms
binlog-do-db=gulimall_sms
binlog-do-db=gulimall_wms
binlog-do-db=gulimall_admin
binlog-do-db=Test
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
4.重启slaver-02
docker restart mysql-slaver-02
5.为 slaver-02授权用户来他的同步数据
docker exec -it mysql-slaver-02 /bin/bash
6.进入mysql内部
mysql –uroot -p
Enter password:root
7.授权 root 可以远程访问
#授权
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
#刷新权限
flush privileges;
8.查看master状态 9. 设置主库连接
change master to master_host='192.168.200.128',master_user='backup',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=0,master_port=3307;
#master_host:主节点虚拟机ip
#master_user:用于连接主机的集群账号
#master_password:用于连接主机的集群密码
#master_log_file必须与2.2.1.8 的File字段一致,Position不用一致后面会自动同步
10.启用主从同步
start slave;
11.查看从库状态
#slaver02的端口号为docker run -p 3318:3306 --name mysql-slaver-01 \ 创建实例中的3317
show slave status
12.主从同步测试(1.主节点新建数据库gulimall_ums,两个从机刷新后也有相同数据库,只要此处同步其实就代表成功了) 13.2.在主节点gulimall_ums库下执行2.1.5.2的文件
2.3 Mysql双主双从复制 (独立模块需要重新下载Docker按照2.1步骤一步一步走)
lz 将虚拟机恢复到快照:Linux未安装Docker时的状态以便后面测试
2.3.1 下载 mysql 镜像
docker pull mysql:5.7
2.3.2 创建 Master-01实例
1.创建 Master-01 实例并启动
docker run -p 3307:3306 --name mysql-master-01 \
-v /mydata/mysql/master-01/log:/var/log/mysql \
-v /mydata/mysql/master-01/data:/var/lib/mysql \
-v /mydata/mysql/master-01/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
2.修改 Master-01 基本配置
vim /mydata/mysql/master-01/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
注意: skip-name-resolve 一定要加, 不然连接 mysql 会超级慢
3.添加 Master-01 主从复制部分配置 #auto_increment_increment,控制主键自增的自增步长,用于防止Master与Master之间复制出现重复自增字段值,通常auto_increment_increment=n,有多少台主服务器,n 就设置为多少; #auto_increment_offset=1设置自增起始值,这里设置为1,这样Master的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID #注意auto_increment_offset的设置,不同的master设置不应该一样,否则就容易引起主键冲突,比如master1的offset=1,则master2的offset=2,master3的offset=3 #在双主模式中,log-slave-updates 配置项一定要配置,否则在master1(3307)上进行了更新数据,在master2(3308)和slave1(3309)上会更新,但是在slave2(3310)上不会更新
#为my.cnf写入一下配置
server_id=1 #指定集群id
log-bin=mysql-bin #打开二进制日志功能
read-only=0 #关闭只读,可读可写
binlog-do-db=gulimall_ums #指定mysql的binlog日志记录哪个db
binlog-do-db=gulimall_pms
binlog-do-db=gulimall_oms
binlog-do-db=gulimall_sms
binlog-do-db=gulimall_wms
binlog-do-db=gulimall_admin
binlog-do-db=test_master_01
binlog-do-db=test_master_02
replicate-ignore-db=mysql #用来设置不需要同步的库,此处指定的mysql系统库
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
auto_increment_increment=2
auto_increment_offset=1
log-slave-updates
sync_binlog=1
4.重启Master-01
docker restart mysql-master-01
5.为 master 授权用户来他的同步数据 (1)进入docker容器
docker exec -it mysql-master-01 /bin/bash
(2) 进入mysql内部
mysql –uroot -p
Enter password:root
(3) 授权 root 可以远程访问
#授权
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
#刷新权限
flush privileges;
(4) 添加用来同步的用户
GRANT REPLICATION SLAVE ON *.* to 'backup1'@'%' identified by '123456';
#backup1为账号名,
#123456为账号密码
2.3.3 创建 Master-02实例
1.创建 Master-02 实例并启动
docker run -p 3308:3306 --name mysql-master-02 \
-v /mydata/mysql/master-02/log:/var/log/mysql \
-v /mydata/mysql/master-02/data:/var/lib/mysql \
-v /mydata/mysql/master-02/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
2.修改 Master-01 基本配置
vim /mydata/mysql/master-02/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
注意: skip-name-resolve 一定要加, 不然连接 mysql 会超级慢
3.添加 Master-01 主从复制部分配置 #auto_increment_increment,控制主键自增的自增步长,用于防止Master与Master之间复制出现重复自增字段值,通常auto_increment_increment=n,有多少台主服务器,n 就设置为多少; #auto_increment_offset=1设置自增起始值,这里设置为1,这样Master的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID #注意auto_increment_offset的设置,不同的master设置不应该一样,否则就容易引起主键冲突,比如master1的offset=1,则master2的offset=2,master3的offset=3 #在双主模式中,log-slave-updates 配置项一定要配置,否则在master1(3307)上进行了更新数据,在master2(3308)和slave1(3309)上会更新,但是在slave2(3310)上不会更新
#为my.cnf写入一下配置
server_id=2 #指定集群id
log-bin=mysql-bin #打开二进制日志功能
read-only=0 #关闭只读,可读可写
binlog-do-db=gulimall_ums #指定mysql的binlog日志记录哪个db
binlog-do-db=gulimall_pms
binlog-do-db=gulimall_oms
binlog-do-db=gulimall_sms
binlog-do-db=gulimall_wms
binlog-do-db=gulimall_admin
binlog-do-db=test_master_01
binlog-do-db=test_master_02
replicate-ignore-db=mysql #用来设置不需要同步的库,此处指定的mysql系统库
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
auto_increment_increment=2
auto_increment_offset=2
log-slave-updates
sync_binlog=1
4.重启Master-02
docker restart mysql-master-02
5.为 master-02 授权用户来他的同步数据 (1)进入docker容器
docker exec -it mysql-master-02 /bin/bash
(2) 进入mysql内部
mysql –uroot -p
Enter password:root
(3) 授权 root 可以远程访问
#授权
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
#刷新权限
flush privileges;
(4) 添加用来同步的用户
GRANT REPLICATION SLAVE ON *.* to 'backup2'@'%' identified by '123456';
#backup2为账号名,
#123456为账号密码
2.3.4 创建 Slaver-01实例并启动
1.创建实例
docker run -p 3309:3306 --name mysql-slaver-01 \
-v /mydata/mysql/slaver01/log:/var/log/mysql \
-v /mydata/mysql/slaver01/data:/var/lib/mysql \
-v /mydata/mysql/slaver01/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
2.修改 slaver-01基本配置
vim /mydata/mysql/slaver01/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
3.添加 slaver-01 主从复制部分配置
vim /mydata/mysql/slaver01/conf/my.cnf
server_id=3 #注意此处id不能与主节点相同
log-bin=mysql-bin
#是否只读,1 代表只读,0 代表读写
read-only=1
#binlog-do-db配置了哪些数据库需要主从复制
binlog-do-db=gulimall_ums
binlog-do-db=gulimall_pms
binlog-do-db=gulimall_oms
binlog-do-db=gulimall_sms
binlog-do-db=gulimall_wms
binlog-do-db=gulimall_admin
binlog-do-db=test_master_01
binlog-do-db=test_master_02
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
4.重启slaver-01
docker restart mysql-slaver-01
5.为 slaver-01授权用户来他的同步数据
docker exec -it mysql-slaver-01 /bin/bash
6.进入mysql内部
mysql –uroot -p
Enter password:root
7.授权 root 可以远程访问
#授权
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
#刷新权限
flush privileges;
8.查看Master-01状态 9. 设置Master-01主库连接
change master to master_host='192.168.200.128',master_user='backup1',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3307;
#master_host:主节点虚拟机ip
#master_user:用于连接主机的集群账号
#master_password:用于连接主机的集群密码
#master_log_file必须与2.3.4.8 的File字段一致,Position不用一致后面会自动同步
10.启用主从同步
start slave;
11.查看从库状态
#slaver01的端口号为docker run -p 3309:3306 --name mysql-slaver-01 \ 创建实例中的3309
show slave status
2.3.5 创建 Slaver-02实例并启动
1.创建实例
docker run -p 3310:3306 --name mysql-slaver-02 \
-v /mydata/mysql/slaver02/log:/var/log/mysql \
-v /mydata/mysql/slaver02/data:/var/lib/mysql \
-v /mydata/mysql/slaver02/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
2.修改 slaver-02基本配置
vim /mydata/mysql/slaver02/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
3.添加 slaver-02 主从复制部分配置
vim /mydata/mysql/slaver02/conf/my.cnf
server_id=4 #注意此处id不能与主节点相同
log-bin=mysql-bin
#是否只读,1 代表只读,0 代表读写
read-only=1
#binlog-do-db配置了哪些数据库需要主从复制
binlog-do-db=gulimall_ums
binlog-do-db=gulimall_pms
binlog-do-db=gulimall_oms
binlog-do-db=gulimall_sms
binlog-do-db=gulimall_wms
binlog-do-db=gulimall_admin
binlog-do-db=test_master_01
binlog-do-db=test_master_02
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
4.重启slaver-02
docker restart mysql-slaver-02
5.为 slaver-02授权用户来他的同步数据
docker exec -it mysql-slaver-02 /bin/bash
6.进入mysql内部
mysql –uroot -p
Enter password:root
7.授权 root 可以远程访问
#授权
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
#刷新权限
flush privileges;
8.查看Master-02状态 9. 设置Master-02主库连接
change master to master_host='192.168.200.128',master_user='backup2',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3308;
#master_host:主节点虚拟机ip
#master_user:用于连接主机的集群账号
#master_password:用于连接主机的集群密码
#master_log_file必须与2.3.4.8 的File字段一致,Position不用一致后面会自动同步
10.启用主从同步
start slave;
11.查看从库状态
#slaver02的端口号为docker run -p 3310:3306 --name mysql-slaver-02 \ 创建实例中的3310
show slave status
2.3.6 Docker 服务器、Mysql容器设置自动启动
查看已启动的服务
systemctl list-units --type=service
查看是否设置开机启动
systemctl list-unit-files | grep enable
设置开机启动
systemctl enable docker.service
关闭开机启动
systemctl disable docker.service
#查看docker是否设置开机启动
systemctl list-unit-files | grep enable | grep docker
#设置启动docker时,mysql自启动
docker update mysql-slaver-01 --restart=always
docker update mysql-master-01 --restart=always
docker update mysql-slaver-02 --restart=always
docker update mysql-master-02 --restart=always
2.3.7 Master-01 Master-02两个主服务器互为主从
1.Master-01为主,Master-02为从 (1)为 master-02授权用户来他的同步数据
docker exec -it mysql-master-02 /bin/bash
(2)进入mysql内部
mysql –uroot -p
Enter password:root
(3)查看Master-01状态
show master status
(4)设置Master-01主库连接
change master to master_host='192.168.200.128',master_user='backup1',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3307;
#master_host:主节点虚拟机ip
#master_user:用于连接主机的集群账号
#master_password:用于连接主机的集群密码
#master_log_file必须与2.3.4.8 的File字段一致,Position不用一致后面会自动同步
(5)启用主从同步
start slave;
2.Master-02为主,Master-01为从 (1)为 master-02授权用户来他的同步数据
docker exec -it mysql-master-01 /bin/bash
(2)进入mysql内部
mysql –uroot -p
Enter password:root
(3)查看Master-02状态
show master status
(4)设置Master-02主库连接
change master to master_host='192.168.200.128',master_user='backup2',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3308;
#master_host:主节点虚拟机ip
#master_user:用于连接主机的集群账号
#master_password:用于连接主机的集群密码
#master_log_file必须与2.3.4.8 的File字段一致,Position不用一致后面会自动同步
(5).启用主从同步
start slave;
2.4 Mysql双主双从复制数据测试
2.4.1 为Master-01添加数据库test_master_01,刷新Slaver01和Slaver01和Master-02看是否有数据库产生,有则成功
2.4.2 为Master-02添加数据库test_master_02,刷新Slaver01和Slaver02和Master-01看是否有数据库产生,有则成功
2.4.3 为Master-01的数据库test_master_01添加下列数据,刷新Slaver01和Slaver01和Master-02看是否有数据产生,有则成功
DROP TABLE IF EXISTS `backer_menu_tab`;
CREATE TABLE `backer_menu_tab` (
`menu_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限Id',
`parent_id` int(11) NOT NULL COMMENT '父级权限Id,第一级权限值为0',
`menu_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '权限名称',
`menu_sign` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '权限标识符',
`menu_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限路径',
`add_time` datetime(0) NOT NULL COMMENT '添加时间',
PRIMARY KEY (`menu_id`) USING BTREE,
UNIQUE INDEX `menu_sign`(`menu_sign`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of backer_menu_tab
-- ----------------------------
INSERT INTO `backer_menu_tab` VALUES (1, 0, '报警模块', 'alarm', '/alarm', '2023-03-26 20:46:17');
INSERT INTO `backer_menu_tab` VALUES (2, 0, '管理员模块', 'backer', '/backer', '2023-03-26 20:47:19');
INSERT INTO `backer_menu_tab` VALUES (3, 0, '设备模块', 'device', '/device', '2023-03-26 20:47:48');
SET FOREIGN_KEY_CHECKS = 1;
Master01
Master02
Slaver01
Slaver02
2.4.4 为Master-02的数据库test_master_02添加下列数据,刷新Slaver01和Slaver01和Master-02看是否有数据产生,有则成功
DROP TABLE IF EXISTS `backer_menu_tab`;
CREATE TABLE `backer_menu_tab` (
`menu_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限Id',
`parent_id` int(11) NOT NULL COMMENT '父级权限Id,第一级权限值为0',
`menu_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '权限名称',
`menu_sign` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '权限标识符',
`menu_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限路径',
`add_time` datetime(0) NOT NULL COMMENT '添加时间',
PRIMARY KEY (`menu_id`) USING BTREE,
UNIQUE INDEX `menu_sign`(`menu_sign`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of backer_menu_tab
-- ----------------------------
INSERT INTO `backer_menu_tab` VALUES (1, 0, '报警模块', 'alarm', '/alarm', '2023-03-26 20:46:17');
INSERT INTO `backer_menu_tab` VALUES (2, 0, '管理员模块', 'backer', '/backer', '2023-03-26 20:47:19');
INSERT INTO `backer_menu_tab` VALUES (3, 0, '设备模块', 'device', '/device', '2023-03-26 20:47:48');
SET FOREIGN_KEY_CHECKS = 1;
Master02
Master01
Slaver01
Slaver02
由上图知双主双从测试完成
文章链接
发表评论