Mysql集群部署

2021/03/11

Mysql集群部署

参考资料

  • 官网地址:https://dev.mysql.com/
  • 下载地址:https://dev.mysql.com/downloads/mysql/
  • 文档地址:

一、Linux部署MySQL主从

1.1 概述:

适用条件: 适用于新搭建环境mysql主从搭建, 两台主机部署mysql一主一从

home_dir:/data/mysql
data_dir:/data/mysqldata
port:3306
socket:/data/mysqldata/mysql.sock

补充说明: 若为有数据的单库切换为主从,在进行主从搭建操作前,需将主库数据备份还原至从库,再进行锁表建立主从

1.2 主从库操作

1、创建mysql用户组(无需设置密码)
groupadd mysql
useradd -g mysql -m mysql

2、下载mysql安装包并解压(放于/data/package)
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
chmod 755 mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.21-linux-glibc2.12-x86_64  /data/mysql

3、建立数据目录
mkdir /data/mysqldata
chown -R mysql:mysql /data/mysqldata

4、初始化,记下初始化后的随机密码
cd /data/mysql
./bin/mysqld --user=mysql --basedir=/data/mysql --datadir=/data/mysqldata --initialize

5、配置配置文件 (注意主从库的server-id不能一样)
vim /etc/my.cnf
[client]
port = 3306
socket = /data/mysqldata/mysql.sock
[mysqld]
#skip-grant-tables
basedir = /data/mysql
port = 3306
socket = /data/mysqldata/mysql.sock
datadir = /data/mysqldata
server-id = 1
log-bin = mysql-bin #打开二进制功能,MASTER主服务器必须打开此项
binlog-format=mixed
#gtid-mode=on
#enforce-gtid-consistency=true
master-info-repository=TABLE
slave-parallel-workers=0
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
expire_logs_days=7
max_binlog_size=1024M #binlog单文件最大值
max_connections = 3000
max_connect_errors = 30
character-set-server=utf8 #服务端默认字符集
wait_timeout=1800 #请求的最大连接时间
interactive_timeout=1800 #和上一参数同时修改才会生效
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #sql模式
max_allowed_packet = 10Md
bulk_insert_buffer_size = 8M
#query_cache_type = 1
#query_cache_size = 128M
#query_cache_limit = 4M
key_buffer_size = 256M
read_buffer_size = 16K
skip-name-resolve
slow_query_log=1
long_query_time = 6
slow_query_log_file=slow-query.log
relay-log = /data/mysqldata/relay-bin
slave-skip-errors = 1032,1062
replicate-ignore-db =mysql
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
[mysql]
auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
[mysqldump]
quick
max_allowed_packet = 16M

6、启动mysql
cd /data/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
# mysqld_safe --user=mysql &

7、添加环境变量
vi /etc/profile
vi /etc/bashrc
添加:export PATH=$PATH:/data/mysql/bin
#生效
source  /etc/profile

8、修改mysql root密码,并授予远程登录权限–初次登录为初始化密码
$mysql -u root -p
mysql> alter user 'root'@'localhost' identified by '123456';
远程登录授权
mysql> create user 'root'@'%' identified with mysql_native_password by '123456';
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
mysql> flush privileges;

1.3 主库操作

1、创建主从复制slave 账号
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456';	//创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';	//授予复制权限
mysql> flush privileges;

2、锁表,查看master状态
mysql>flush tables with read lock; //新库不用执行
mysql>show master status;

1.4 从库操作

1、change master
msyql>CHANGE MASTER TO
MASTER_HOST = 'host', # master地址
MASTER_PORT = 3306, # master的端口
MASTER_USER = 'repl',#master上创建的主从复制slave 账号
MASTER_PASSWORD = '123456', #master上创建的主从复制slave 账号的密码
MASTER_LOG_FILE = 'mysql-bin.000001',#另一台机器上执行SHOW MASTER STATUS得到的文件名
MASTER_LOG_POS = 192, #另一台机器上执行SHOW MASTER STATUS得到的偏移量
GET_MASTER_PUBLIC_KEY=1;

2、启动主从复制
mysql>start slave;

3、检查主从状态
mysql>show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

4、多从,从库同样操作

二、主从-双主 模式比较

通过Percona-XtraDB-Cluster部署mysql双主

三、主从手动切换操作示例

  • MySQL 主从切换步骤 https://blog.csdn.net/sinat_36757755/article/details/124049382
  • mysql——binlog和gtid主从复制搭建 https://baijiahao.baidu.com/s?id=1760992129774244553

场景一:主备正常切换,此场景主要是针对在主备同步复制正常的情况下进行的主备切换,例如:灾备演练,计划性的主备切换。

1.先正常关闭原从服务器的主从复制:
STOP SLAVE;   

2.清除原从服务器上的binlog文件和索引:
RESET MASTER;   

3.清除原从服务器上的主从状态信息:
RESET SLAVE ALL;   

4.原从服务器上的bin-log信息:
show binary logs;

5.原从服务器上:创建并授权一个复制账号:
CREATE USER 'repl'@'%' IDENTIFIED BY '123456'; //创建用户
grant replication slave on *.* to repl@'%' identified by '123456';//授予复制权限

6.配置新从服务器新的主服务器信息:
CHANGE MASTER TO MASTER_HOST='新的主服务器IP地址', MASTER_USER='新的主服务器用户名', MASTER_PASSWORD='新的主服务器密码', MASTER_LOG_FILE='新的主服务器上的binlog文件', MASTER_LOG_POS=新的主服务器上的binlog位置;   

7.重启新的从服务器和新的主服务器,启动新从服务器的主从复制:
START SLAVE;   

8.验证:使用命令 "SHOW SLAVE STATUS\G" 查看新的从服务器的状态;

四、mysql主从复制(续)——双主双从+keepalive实现故障切换

mysql主从复制(续)——双主双从(互为主备)+keepalive实现故障切换:https://baijiahao.baidu.com/s?id=1761063519243311104&wfr=spider&for=pc

问题记录

Post Directory

扫码关注公众号:暂无公众号
发送 290992
即可立即永久解锁本站全部文章