卸载数据库
1.查找mysql所在的位置
root@mgr2:/home/wiskind# find / -name mysql
/var/lib/mysql
/var/lib/mysql/mysql
/var/log/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql
/usr/bin/mysql
/usr/lib/mysqlsh/lib/python3.8/site-packages/oci/mysql
/usr/lib/mysql
/usr/share/bash-completion/completions/mysql
/snap/core18/2128/etc/apparmor.d/abstractions/mysql
/snap/core18/2128/usr/share/bash-completion/completions/mysql
/snap/core18/2812/etc/apparmor.d/abstractions/mysql
/snap/core18/2812/usr/share/bash-completion/completions/mysql
/snap/snapd/21465/usr/lib/snapd/apparmor.d/abstractions/mysql
/snap/snapd/21184/usr/lib/snapd/apparmor.d/abstractions/mysql
/snap/core20/2264/etc/apparmor.d/abstractions/mysql
/snap/core20/2264/usr/share/bash-completion/completions/mysql
/snap/core20/2182/etc/apparmor.d/abstractions/mysql
/snap/core20/2182/usr/share/bash-completion/completions/mysql
root@mgr2:/home/wiskind# service mysql stop
2.删除对应的文件
service mysql stop
rm -rf /var/lib/mysql /var/log/mysql /usr/bin/mysql /usr/lib/mysql
开始安装MySQL
-
安装开始之前首先要设置大小写敏感项目关闭,即忽略大小写
scp -r mysql wiskind@11.1.100.176:/home/wiskind/mysql 设置好配置文件直接运行 lower-case-table-names = 1 # 取消大小寫敏感 default_authentication_plugin = mysql_native_password #创建用户密码为这个格式 # 设置大小写敏感为1 下边这个执行不执行 没啥效果 # apt安装时,安装完毕就启动mysql了,没有机会做初始化设置大小写敏感, # 在执行apt mysqlserver之前执行下面的命令 cd /usr/bin sudo debconf-set-selections <<< "mysql-server mysql-server/lowercase-table-names select Enabled" # 预配置MySQL服务器包 # 系统会要求您提供 MySQL 安装的 root 用户的密码 # sudo dpkg-preconfigure mysql-community-server_8.0.30-1ubuntu20.04_amd64.deb sudo dpkg-preconfigure mysql-community-server_8.0.30-1ubuntu20.04_amd64.deb # 此处安装的时候会出现某些插件安装不上是因为/etc/mysql下边的配置文件缺失,可以提前先创建好 # 对于MySQL服务器的基本安装,安装数据库公共文件包、客户端包、客户端元包、服务器包和服务器元包(按顺序) sudo dpkg -i mysql-{common,community-client-plugins,community-client-core,community-client,client,community-server-core,community-server,server}_*.deb # 如果dpkg 警告您未满足的依赖关系 ,您可以使用apt-get修复它们 sudo apt-get -f install # systemctl daemon-reload systemctl enable mysql.service systemctl restart mysql.service systemctl start mysql.service systemctl stop mysql.service systemctl status mysql.service # mysql组件版本 mysql --version # 查看大小写是否设置为1 mysql -u root -p show variables like '%case%'; #修改密码以及设置远程登录 update user set host = '%' where user = 'root'; alter user root@'%' identified with mysql_native_password by '123456';
配置mysql的MGR集群
配置文件需要进行如下配置
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
lower-case-table-names = 1
default_authentication_plugin = mysql_native_password
#绑定到任意地址,远程访问
bind-address = 0.0.0.0
#允许创建不安全的存储函数写入二进制日志
log_bin_trust_function_creators = 1
#函数的最大允许结果长度
group_concat_max_len = 10240
#组复制配置
#【手动】服务器唯一标识,各个节点不能一样
server_id = 1001
#【手动】打开全局事务标识符GTID
gtid_mode = ON
enforce_gtid_consistency = ON
#【手动】二进制日志依赖跟踪
binlog_transaction_dependency_tracking = WRITESET
#【默认】多线程组复制,默认开启多线程,默认为4个线程
replica_parallel_workers = 4
#【手动】开启性能模式
performance_schema = ON
#【默认】事务隔离级别
transaction_isolation = READ-COMMITTED
#禁止实例使用费innodb引擎
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
#加载克隆插件
loose-plugin_load_add="mysql_clone.so"
#加载组复制插件
#APT源安装默认没有携带组复制插件
loose-plugin_load_add="group_replication.so"
#loose-前缀标识服务器启动时还没有加载组复制插件
loose-group_replication_group_name = "3681b81f-5c24-4426-a59b-505b8f91af68"
#白名单必须设置
loose-group_replication_ip_whitelist = "11.1.100.0/24"
#本地集群端口,集群间通过此端口通讯,这是默认值
loose-group_replication_local_address = "11.1.100.177:33061"
#可以不配做,msyql-shell加入集群时会将节点加入到次变量中
loose-group_replication_group_seeds = "11.1.100.175:33061,11.1.100.176:33061,11.1.100.177:33061"
#默认关闭, 防止重启后自动创建新的Group
loose-group_replication_start_on_boot = OFF
#默认关闭, 防止自动创建新的Group
loose-group_replication_bootstrap_group = OFF
#组复制运行在单主模式下(ON:单主,OFF:多主)
loose-group_replication_single_primary_mode = ON
#在单主模式下,必须在所有组成员上禁用此选项。在多主模式下,启用此选项时
loose-group_replication_enforce_update_everywhere_checks = OFF
#心跳时间,超过就剔除节点,调优时,可以动态全局设置,网络不好时设置时间可以长点
loose-group_replication_member_expel_timeout = 5
#设置了这个就不需要设置hosts文件了
#report_host = 11.1.100.177
对于mysql进行相关的设置
# 设置binlog对于任何操作不做记录
SET SQL_LOG_BIN=0;
# 创建一个用户用作复制使用
CREATE USER repl@'%' IDENTIFIED BY 'repl';
# 给创建的用户赋予相应的权限
GRANT REPLICATION SLAVE ON *.* TO repl@'%';
GRANT connection_admin ON *.* TO repl@'%';
# -- 授予本地克隆权限
GRANT backup_admin ON *.* TO repl@'%';
GRANT group_replication_stream ON *.* TO repl@'%';
# 权限赋予了之后并没有生效,你需要刷新一下权限
FLUSH PRIVILEGES;
# 最后操作完成了你需要让bin_log记录操作
SET sql_log_bin = 1;
# 需要对创建的这个用户开辟一个通道用来做组复制使用
CHANGE REPLICATION SOURCE TO SOURCE_USER='repl', SOURCE_PASSWORD='repl' FOR CHANNEL 'group_replication_recovery';
# 这里一般需要安装两个插件 一个是组复制的插件group_replication 和 clone 的插件
SHOW PLUGINS;
#如果发现没有插件了你需要安装一个插件
install plugin clone soname 'mysql_clone.so';
# 如果使用克隆首先设置一个捐赠者 一般把主节点设置为捐赠者
SET GLOBAL clone_valid_donor_list = '11.1.100.177:3306';
# 开始执行clone到本地机器上 此处需要注意想clone到哪台机器上就在哪台机器上执行就好了。
CLONE INSTANCE FROM 'repl'@'11.1.100.177':3306 IDENTIFIED BY 'repl';
# 开启组复制,这里只有主节点开启就可以了,从节点上没必要开启
SET GLOBAL group_replication_bootstrap_group = ON;
# 开启组复制
START group_replication;
# 开启组复制后把这个变量设置为off
SET GLOBAL group_replication_bootstrap_group = off;
#查看组复制的状态是否真的成功启动起来了。
SELECT * FROM replication_group_members;
恢复备份好的数据
##############################开始同步数据恢复数据#################################
# 使用mysqlsh进入mysqlshell的终端
mysqlsh
#在mysqlsh中需要链接组复制的主节点
\connect root@11.1.100.177:3306
# 连接上数据库之后就可以对备份数据进行恢复了 第一个参数是需要恢复的数据地址, 第二个是个JSONObject对象,可以添加好多参数,这里的参数是每次执行都重置数据后重新开始。
util.loadDump("/home/wiskind/wsd_mms_db/wsd_mms_db",{resetProgress:true});
###################一下操作在数据库中操作###########################
# 需要注意的是local_infile 是 MySQL 的一个全局系统变量,用于控制是否允许客户端通过 LOAD DATA LOCAL INFILE 语句将本地文件加载到服务器上的表中。如果为off则上传不上数据
SET GLOBAL local_infile=ON
# 查看是否配置成功
SHOW VARIABLES LIKE '%local_infile%'
# 这里需要给执行操作的用户赋予system_user权限,咱们使用的是root用户所以给root赋予权限
GRANT SYSTEM_USER ON *.* TO root
flush privileges;
# 在执行过程中某些存储过程或者视图中有特定使用的用户 如果没有需要进行添加,否则执行恢复数据的时候没法恢复需要创建后再恢复
CREATE USER mymms@'%' IDENTIFIED BY '123456';