文章目录
环境
CentOS7 服务器两台 172.16.72.101、172.16.72.102
mysql8.0.26
搭建mysql
#因为需要配置文件启动,配置文件如下 步骤6修改为
6.配置/etc/my.cnf
mv /etc/my.cnf /etc/my.cnf.bak
vi /etc/my.cnf
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
# 允许 MyISAM 表的符号链接;8.0.26版本已弃用
#symbolic-links=0
# 允许最大连接数
max_connections=1024
#任何给定 MySQL 用户帐户允许的最大同时连接数。值 0(默认值)表示 “没有限制。”
max_user_connections=0
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100
#SELECT语句 的执行超时 ,以毫秒为单位。如果值为 0,则不启用超时
max_execution_time=5000
#如果设置为OFF,MySQL 会中止 SELECT可能需要很长时间才能执行的语句(即,优化器估计检查的行数超过 的值的语句 max_join_size)。WHERE当发布了不明智的声明时,这很有用。新连接的默认值为 ON,它允许所有 SELECT语句。
#sql_big_selects=OFF
#查询返回数据行数最大值,超过此值则终止查询默认最大值18446744073709551615
max_join_size=10000
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#是否对sql语句大小写敏感,1表示不敏感 注意此参数在8.0版本后必须在初始化数据库之前配置,即初始化后不允许修改此值
lower_case_table_names = 1
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
#Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
#执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
lock_wait_timeout = 3600
#内部内存临时表的最大值。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 64M
max_heap_table_size = 64M
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
#mysql socket连接使用
[client]
port=3306
#配合[mysqld] 下的socket
socket=/usr/local/mysql/data/mysql.sock
上述配置中需要新增 log、data文件夹
#创建log、data文件夹
mkdir data log
# 因为是使用root权限创建的文件夹,所以需要修改文件夹权限为mysql
chown -R mysql:mysql /usr/local/mysql/
配置集群
1. 修改配置文件
-
修改 172.16.72.101配置文件 在 [mysql] 下添加配置
vi /etc/my.cnf
# 集群master #服务id 所有的集群id都不可相同 server_id=1 # 主从复制需要log-bin文件 主机需要指定log-bin文件目录 log-bin=/usr/local/mysql/log/mysql-bin binlog_format=mixed #双主同步时主机也需要配置从机同步文件 本次是主从复制,主机不需要以下配置 relay-log=/usr/local/mysql/log/mysql-relay-bin relay-log-index=/usr/local/mysql/log/mysql-relay-bin.index #双主同步为了主键自增时值发生冲突,需要设置自增步长为2 且首字段一个是1一个是2 #auto-increment-increment 表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535 #auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535 auto-increment-increment=2 auto-increment-offset=1
-
修改 172.16.72.102配置文件
vi /etc/my.cnf
# 集群slave #服务id 所有的集群id都不可相同 server_id=2 # 主从复制需要log-bin文件 主机需要指定log-bin文件目录 从机不需要配置 log-bin=/usr/local/mysql/log/mysql-bin binlog_format=mixed #从机同步文件 relay-log=/usr/local/mysql/log/mysql-relay-bin relay-log-index=/usr/local/mysql/log/mysql-relay-bin.index #双主同步为了主键自增时值发生冲突,需要设置自增步长为2 且首字段一个是1一个是2 #auto-increment-increment 表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535 #auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535 auto-increment-increment=2 auto-increment-offset=1
-
主机从机分别重启
service mysql restart
2.创建用户
172.16.72.201配置
-
登录并创建从机访问用户
mysql -uroot -p
CREATE USER 'repl'@'172.16.72.202' IDENTIFIED BY 'repl_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.16.72.202'; flush privileges;
解析:
#创建一个用户repl 密码是 repl_password 来源ip为172.16.72.202(从机ip)
CREATE USER ‘repl’@‘172.16.72.202’ IDENTIFIED BY ‘repl_password’;
#赋予’repl’@‘172.16.72.202’ 用户可以进行复制
GRANT REPLICATION SLAVE ON . TO ‘repl’@‘172.16.72.202’;
#刷新,即刻生效
flush privileges; -
查看主机的信息
show master status;
File: mysql-bin.000001
Position: 842
172.16.72.202修改需要同步的主机的地址
-
登录并修改主机同步地址
mysql -uroot -p
change master to master_host='172.16.72.201', master_user='repl',master_password='repl_password',master_log_file='mysql-bin.000001',master_log_pos=842; start slave;
解析:1): change master to master_host=‘172.16.72.201’, master_user=‘repl’,master_log_file=‘mysql-bin.000001’,master_log_pos=842;
#master_host 主机地址
#master_user 主机创建的从机复制账号 来源于CREATE USER ‘repl’@‘172.16.72.202’ IDENTIFIED BY ‘repl_password’; 的repl
#master_password 主机创建的从机复制账号密码 来源于CREATE USER ‘repl’@‘172.16.72.202’ IDENTIFIED BY ‘repl_password’; 的repl_password
#master_log_file 主机show master status; 时显示的File
#master_log_pos 主机show master status; 时显示的Position
#start slave; 启动从机开始同步
172.16.72.202配置主机信息
CREATE USER 'repl'@'172.16.72.201' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.16.72.201';
flush privileges;
解析:
#创建一个用户repl 密码是 repl_password 来源ip为172.16.72.201(从机ip)
CREATE USER ‘repl’@‘172.16.72.201’ IDENTIFIED BY ‘repl_password’;
#赋予’repl’@‘172.16.72.201’ 用户可以进行复制
GRANT REPLICATION SLAVE ON . TO ‘repl’@‘172.16.72.201’;
#刷新,即刻生效
flush privileges;
172.16.72.201修改需要同步的主机的地址
-
在172.16.72.202上查看master 信息
show master status\G
File: mysql-bin.000001
Position: 857 -
修改172.16.72.201同步地址
change master to master_host='172.16.72.202', master_user='repl',master_password='repl_password',master_log_file='mysql-bin.000001',master_log_pos=1439; start slave;
解析:1): change master to master_host=‘172.16.72.202’, master_user=‘repl’,master_log_file=‘mysql-bin.000001’,master_log_pos=842;
#master_host 主机地址
#master_user 主机创建的从机复制账号 来源于CREATE USER ‘repl’@‘172.16.72.202’ IDENTIFIED BY ‘repl_password’; 的repl
#master_password 主机创建的从机复制账号密码 来源于CREATE USER ‘repl’@‘172.16.72.202’ IDENTIFIED BY ‘repl_password’; 的repl_password
#master_log_file 主机show master status; 时显示的File
#master_log_pos 主机show master status; 时显示的Position
#start slave; 启动从机开始同步
验证
-
查看信息
show slave status \G
出现如下信息
Slave_IO_Running :yes
Slave_SQL_Running:Yes
即为从机同步成功 -
主机创建数据库查看从机是否自动创建
主机创建数据库test并查看create database test; show databases;
从机查看show databases;