当前位置:   article > 正文

mysql8集群部署_mysql8 集群部署

mysql8 集群部署

环境情况:

服务器IP:

192.168.81.235			centos7.6				网易yum源
192.168.81.236			centos7.6				网易yum源
192.168.81.237			centos7.6				网易yum源
  • 1
  • 2
  • 3

清除残留数据库

#卸载mariadb和mysql
rpm -qa | grep mariadb | xargs rpm -e --nodeps
rpm -qa | grep mysql | xargs rpm -e --nodeps
  • 1
  • 2
  • 3

1、三台都配置hosts和修改hostname

192.168.81.235		hostnamectl set-hostname mysql1
192.168.81.236		hostnamectl set-hostname mysql2
192.168.81.237		hostnamectl set-hostname mysql3
  • 1
  • 2
  • 3
vim /etc/hosts
---------------------------
192.168.81.235		mysql1
192.168.81.236		mysql2
192.168.81.237		mysql3
  • 1
  • 2
  • 3
  • 4
  • 5

三台服务器互相ping命令测试配置情况

ping mysql1
ping mysql2
ping mysql3
  • 1
  • 2
  • 3

2、设置三台服务器之间互相免交互

每台都需要做,这边只写了一台的步骤

ssh-keygen -t rsa									##生成密钥对文件,一直回车即可	
scp /root/.ssh/id_rsa.pub root@mysql2:/root			##将公钥传给mysql2和mysql3
scp /root/.ssh/id_rsa.pub root@mysql3:/root			

## 在mysql2 和 mysql3 上操作,将mysql1的公钥导入自己的公钥库中
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

## 在mysql1上确定免密是否完成
ssh mysql2
ssh mysql3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

验证结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2cXb01Br-1647942405517)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220308141934524.png)]

3、三台服务器安装mysql 8

mysql8和mysql-shell下载地址:
https://dev.mysql.com/downloads/mysql/
https://dev.mysql.com/downloads/shell/

tar xf mysql-8.0.28-el7-x86_64.tar.gz
mv mysql-8.0.28-el7-x86_64 mysql
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
mkdir /data/mysql/data
mkdir /data/mysql/logs
chown -R mysql:mysql /data/mysql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4、创建my.cnf文件(集群注意server_id需要不同!!)

cat << EOF > /etc/my.cnf
[mysqld]
basedir=/data/mysql
datadir=/data/mysql/data
log-error=/data/mysql/logs/mysql.log
socket=/tmp/mysql.sock
pid-file=/tmp/mysql.pid

event_scheduler=ON

#慢查询sql日志设置
slow_query_log=ON
slow_query_log_file=/data/mysql/logs/mysql-slow.log
long_query_time=1
#作为从库时生效,从库复制中如何有慢sql也将被记录
#log_slow_replica_statements = 1
#检索的行数必须达到此值才可被记为慢查询
min_examined_row_limit = 100
#mysql binlog日志文件保存的过期时间,过期后自动删除
binlog_expire_logs_seconds = 7

#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 3
log_bin = binlog

# 跳过密码登录
#skip-grant-tables
#只能用IP地址检查客户端的登录,不用主机名
skip-name-resolve
#skip-external-locking

#最大连接数
max_connections = 100000
#最大错误连接数
max_connect_errors = 50000
# MySQL能有的连接数量
back_log = 600
# MySQL打开的文件描述符限制
open_files_limit = 65535

innodb_open_files = 5000
# 限制Innodb能打开的表的数据,如果库里的表特别多的情况,请增加这个。这个值默认是300
innodb_buffer_pool_size = 20G
# InnoDB使用一个缓冲池来保存索引和原始数据, 不像MyISAM.
# 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少.


#开启GTID,必须开启
gtid_mode=on
enforce-gtid-consistency=on
binlog_format=ROW
transaction_isolation = READ-COMMITTED
#log-replica-updates=1
binlog_checksum=NONE
master_info_repository=TABLE
relay_log_info_repository=TABLE
#group_replication_member_expel_timeout=10
#group_replication_autorejoin_tries=10
transaction_write_set_extraction = XXHASH64
#replica_preserve_commit_order = ON
binlog_transaction_dependency_tracking = WRITESET
#replica_parallel_type=LOGICAL_CLOCK
#replica_parallel_workers=4
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
disabled_storage_engines = MyISAM,BLACKHOLE,FEDERATED,CSV,ARCHIVE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
lower_case_table_names = 1
tmp_table_size = 512M
read_buffer_size = 32M
read_rnd_buffer_size = 64M
sort_buffer_size = 32M
join_buffer_size = 16M
thread_cache_size = 128
table_open_cache = 256
max_allowed_packet = 512M
binlog_cache_size = 1M
max_heap_table_size = 512M
key_buffer_size = 1024M
default-storage-engine = InnoDB
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_use_native_aio = 1
innodb_flush_log_at_trx_commit = 1
sync_binlog=1
innodb_log_buffer_size = 12M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 80
innodb_lock_wait_timeout = 120
interactive_timeout = 28800
wait_timeout = 28800
explicit_defaults_for_timestamp = true
innodb_io_capacity=200
innodb_data_file_path=ibdata1:1024M:autoextend
log_queries_not_using_indexes = 1
log_throttle_queries_not_using_indexes = 5
EOF
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103

5、启动mysql修改默认密码并授权

## 初始化并后台启动
cd mysql/bin/
./mysqld --initialize --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
./mysqld_safe --defaults-file=/etc/my.cnf &

## 获取密码
grep 'password' /data/mysql/logs/mysql.log | awk '{print $NF}'

## 登陆了mysql并修改命令
./mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'hanweb@123';
update mysql.user set host='%' where user='root';
flush privileges;

## 创建集群所需授权
GRANT CLONE_ADMIN, CONNECTION_ADMIN, GROUP_REPLICATION_ADMIN, PERSIST_RO_VARIABLES_ADMIN, REPLICATION_APPLIER, REPLICATION_SLAVE_ADMIN, ROLE_ADMIN, SYSTEM_VARIABLES_ADMIN ON *.* TO 'root'@'%' WITH GRANT OPTION;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tEpGjilI-1647942405519)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220308144317176.png)]

6、安装mysql­shell工具创建集群

rpm -ivh mysql-shell-8.0.28-1.el7.x86_64.rpm

## 从mysql1 上进入mysqlshell命令模式,
mysqlsh --uri root@mysql1:3306

## 创建集群
var cluster=dba.createCluster("MySQL_InnoDB_Cluster")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-315psaeE-1647942405519)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220308145631293.png)]

7、添加另外两台mysql节点,选项选择’C’

cluster.addInstance('root@mysql2:3306')
cluster.addInstance('root@mysql3:3306')
  • 1
  • 2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KrBWLZKW-1647942405520)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220308145341483.png)]

查看集群状态

cluster.status()
  • 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eP5wmfAx-1647942405520)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220308145857194.png)]

8、切换至多主模式

cluster.switchToMultiPrimaryMode()
  • 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rj8yGmo8-1647942405521)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220308150057381.png)]

9、配置mysql环境变量,加入到systemctl启动中,并设为开机自启

if ! grep /data/mysql /etc/profile
then
cat >> /etc/profile << EOF
export MYSQL_HOME=/data/mysql
export PATH="$PATH:$MYSQL_HOME/bin"
EOF
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
source /etc/profile
  • 1
#重启mysql并设置为开机自启动
if [ ! -e /etc/init.d/mysqld ]
then
cp -a /data/mysql/support-files/mysql.server /etc/init.d/mysqld
fi
  • 1
  • 2
  • 3
  • 4
  • 5
#开机自启
chkconfig --add /etc/init.d/mysqld
chkconfig mysqld on
  • 1
  • 2
  • 3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MByb1MST-1647942405521)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220308152631988.png)]

10、mysqlshell常用命令

1)查看集群状态

shell.connect('root@mysql1:3306')			#连接到实例
var cluster = dba.getCluster()					#定义集群信息
cluster.status();								#查看集群状态
  • 1
  • 2
  • 3

2)配置命令

dba.getCluster();查看集群名
cluster.status();查看集群状态
dba.checkInstanceConfiguration(‘root@mysql1:3306’)检查节点状态是否正常
dba.configureLocalInstance();检查/etc/my.cnf是否正常
var cluster = dba.createCluster(‘myCluster’);创建一个名为myCluster的集群
dba.createCluster(‘st’);创建一个名字为st的集群
cluster.addInstance(‘root@oratest52:3306’);集群添加节点
cluster.switchToMultiPrimaryMode()切换多主模式

3)通用命令

命令别名/快捷方式描述
\help\h or ?打印有关MySQL Shell的帮助,或搜索联机帮助。
\quit\q or \exit退出MySQL Shell。
\在SQL模式下,开始多行模式。输入空行时缓存并执行代码。
\status\s显示当前的MySQL Shell状态。
\js将执行模式切换为JavaScript。
\py将执行模式切换为Python。
\sql将执行模式切换为SQL。
\connect\c连接到MySQL服务器。
\reconnect重新连接到同一个MySQL服务器。
\use\u指定要使用的架构。
\source.使用活动语言执行脚本文件。
\warnings\W显示语句生成的任何警告。
\nowarnings\w不要显示语句生成的任何警告。
\history查看和编辑命令行历史记录。
\rehash手动更新自动完成名称缓存。
\option查询和更改MySQL Shell配置选项。
\show使用提供的选项和参数运行指定的报告。
\watch使用提供的选项和参数运行指定的报告,并定期刷新结果。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/534656
推荐阅读
相关标签
  

闽ICP备14008679号