MySql8主从搭建(rpm包)

**

MySql8主从搭建(rpm包)

**
1、资源规划
MySQL资源规划表
MySql8主从搭建(rpm包)
2、下载相关安装包(包括依赖包)
官网地址:https://downloads.mysql.com/archives/community/
mysql-community-libs-8.0.22-1.el7.x86_64
mysql-community-client-plugins-8.0.22-1.el7.x86_64
mysql-community-client-8.0.22-1.el7.x86_64
mysql-community-server-8.0.22-1.el7.x86_64
mysql-community-common-8.0.22-1.el7.x86_64
mysql-community-devel-8.0.22-1.el7.x86_64

3、配置主机名
hostnamectl set-hostname manager --static
hostnamectl set-hostname node –static

4、关闭 SeLinux
setenforce 0 && sed -i “s/SELINUX=enforcing/SELINUX=disabled/g” /etc/selinux/config

5、配置hosts文件(所有机子均需要配置)
192.168.1.11 manager
192.168.1.12 node
MySql8主从搭建(rpm包)
6、安装相关开发工具
yum -y install htop iotop iftop lrzsz wget zlib-devel net-tools nc telnet openssl-devel
注:需提前初始化数据盘并建立挂载数据目录,此处略

7、安装时按一下顺序(解决包依赖问题)
rpm -ivh mysql-community-common-8.0.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.22-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.22-1.el7.x86_64.rpm

注:若之前安装过MySQL服务,先卸载 rpm -qa|grep mysql|xargs rpm -e --nodeps

8、创建相应目录并授权
mkdir /var/log/mysql #用于存放日志
chown -R mysql:mysql /var/log/mysql
mkdir -p /data/mysql #用于存放数据
chown -R mysql:mysql /data/mysql/
注:均在配置文件中有定义

9、修改配置文件,内容如下
[client]
port = 3306 #指定端口
socket = /tmp/mysql.sock #指定mysql.sock存放路径
default-character-set = utf8 #设置字符集

[mysqld]
user=mysql
port = 3306
datadir = /data/mysql #数据目录,需设置拥有者为mysql,chown -R mysql:mysql /data/mysql/
tmpdir = /tmp
socket = /tmp/mysql.sock # 8版本sock文件默认在/tmp目录下
pid-file = /data/mysql/mysql.pid # 指定pid文件路径
log_error = /var/log/mysql/error.log # 指定错误日志文件路径
slow_query_log_file = /var/log/mysql/slow.log # 指定slow日志文件路径
character-set-server = utf8
default-storage-engine = innodb # 默认存储引擎为innodb
innodb_file_per_table # 使innodb将每个表的数据单独保存,ibd类型的文件主要就是用来保存innodb表中的数据
server-id=1 # 此ID为唯一标识,可以随意取,但不能重复
lower-case-table-names=1 # 表名在硬盘上以小写保存,名称比较对大小写不敏感。MySQL将所有表名转换为小写在存储和查找表上

注:不区分大小写的配置一定要在初始化之前就配置上,要不然后面是配置不上的
sql_mode=“NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES”
slq_mode定义了MySQL应该支持的sql语法,对数据的校验等
NO_AUTO_VALUE_ON_ZERO:不自动将值设为0而是设置为null
STRICT_TRANS_TABLES:开启存储引擎启用严格模式,非法数据值被拒绝
NO_ZERO_IN_DATE:在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入’0000-00-00’。在非严格模式,可以接受该日期,但会生成警告
NO_ZERO_DATE:在严格模式,不要将 '0000-00-00’做为合法日期。你仍然可以用IGNORE选项插入零日期。在非严格模式,可以接受该日期,但会生成警告
ERROR_FOR_DIVISION_BY_ZERO:当分母为0时提示error
NO_ENGINE_SUBSTITUTION:不用其他引擎代替,当指定引擎没有找到时,提示错误,不用其他引擎代替
PIPES_AS_CONCAT:||当成管道符使用,而不是或
ANSI_QUOTES:字符集设置为ANSI

default_authentication_plugin=mysql_native_password # 设置身份验证插件
skip-name-resolve # 禁用dns解析
#skip-grant-tables # 不需要密码认证,直接使用 mysql -uroot -p 然后回车进入数据库

10、起服务
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
MySql8主从搭建(rpm包)
11、进入数据库修改密码
注:安装成功会生成一个临时随机密码,在/var/log/mysqld.log文件里可以查找到
mysql>alter user root@‘localhost’ identified by ‘Sccin1qazCDE#’;
mysql>flush privileges;

12、主从配置
(1)主从复制用户必须存在候选的 master 机器上,在mysql终端下,所有机子上均做以下操作
CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘Sccin1qazCDE#’; #创建一个repl的用户,并授予权限能够登录数据库
GRANT REPLICATION SLAVE ON . TO ‘repl’@’%’; #给repl用户授权使其能够复制
(2)在master的mysql终端下,加锁取 master 的 binlog 的 positon
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
MySql8主从搭建(rpm包)
(3)备份出master的数据库,拷贝到所有slave机器上去
[root@manager work]#mysqldump -uroot -pSccin1qazCDE# -A -B > db.sql
[root@manager work]# scp db.sql root@192.168.1.12:~

(4)释放master上的读锁,在master的mysql终端执行
UNLOCK TABLES;

(5)在slave节点上的mysql终端还原从主拷贝过来 db.sql
source db.sql;

(6)在slave节点上,配置 slave 节点从 master 进行同步
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST=‘192.168.1.11’,MASTER_USER=‘repl’,
MASTER_PASSWORD=‘Sccin1qazCDE#’,
MASTER_LOG_FILE=‘binlog.000005’,MASTER_LOG_POS= 659;
START SLAVE;

(7)检查主从状态
SHOW SLAVE STATUS\G
MySql8主从搭建(rpm包)
MySql8主从搭建(rpm包)
重要参数:
Slave_IO_Running: Yes #负责从主库读取 bin-log 日志,并写入丛库的中继日志中
Slave_SQL_Running: Yes #负责读取并执行中继日志的 bin-log,转换为 sql 语句并应用数据库
Replicate_Ignore_DB: mysql #不同步的库
Seconds_Behind_Master: 0 和 master #同步延迟的秒数,主从延迟太大就需要处理了。为 0 表示已经同步!

上一篇:RPM包安装MYSQL


下一篇:C_Visual Studio Community 2015 免费版安装