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

由上图知双主双从测试完成

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: