mysql主从集群搭建

主mysql开启binlog日志,创建同步用户;从机上配置同步用户并指定同步主机的binlog文件及起始位置即可使用同步用户同步主mysql的binlog日志,配置组成mysql主备集群。
在这里插入图片描述

主备集群上主机可以读写,但是从机只能读不能写,因为是单向同步。一般主从集群只会使用主Mysql,从机实际上只起到备份数据的作用,如果有读写分离可以分担一部分读的压力。
下面使用两台机器做一主一从的mysql主从集群搭建示例:
一、先分别安装mysql

## 创建部署目录
sudo mkdir -p /opt/MPP
sudo chown -R mysql:mysql /opt/MPP
sudo chmod -R 751  /opt/MPP


#复制安装包解压
tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz

## 创建mysql用户及属组
sudo groupadd mysql
sudo useradd -r -g mysql mysql
id mysql

## 创建数据目录并设置权限
#创建mysql数据目录 这里注意如果
sudo mkdir -p /data01/MPP/mysql/data
sudo chown -R mysql: mysql /data01/MPP/mysql
sudo chmod -R 775  /data01/MPP/

cd /opt/MPP/mysql-5.7.37-linux-glibc2.12-x86_64
sudo chmod -R 775  /opt/MPP/mysql-5.7.37-linux-glibc2.12-x86_64
cd /opt/MPP/mysql-5.7.37-linux-glibc2.12-x86_64

## 初始化并记录密码
sudo bin/mysqld --initialize --user=mysql --basedir=/opt/MPP/mysql-5.7.37-linux-glibc2.12-x86_64 --datadir=/data01/MPP/mysql/data

## 开启ssl加密
 sudo bin/mysql_ssl_rsa_setup  --datadir=/data01/MPP/mysql/data

## 编辑配置文件
vi /etc/my.cnf

[mysqld]
basedir=/opt/MPP/mysql-5.7.37-linux-glibc2.12-x86_64
datadir = /data01/MPP/mysql/data
port = 3306
skip-name-resolve
bind-address=0.0.0.0
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
log_timestamps=SYSTEM
max_allowed_packet = 120M
socket =/data01/MPP/mysql/mysql.sock
character-set-server=utf8
default-time_zone = '+8:00'
#主从机的server_id不能相同
server_id=1
#binlog与data放在不同的磁盘,以免binlog写满磁盘导致数据也无法写入
log-bin=/data12/MPP/mysql/arch/mysql-bin
binlog-format=ROW
expire_logs_days=120

relay_log_purge=off
relay-log = /data12/MPP/mysql/relay/relay-bin
relay_log_info_repository = table

log_slave_updates= 1
log-bin-trust-function-creators=1
max_connections=50000
default-storage-engine = InnoDB

[mysqld_safe]
log-error = /tmp/mysql-error.log
pid-file=/data01/MPP/mysql/mysql93.pid

[client]
port = 3306
socket=/data01/MPP/mysql/mysql.sock


#使用mysql用户启动,若启动失败根据异常日志分析,一般是目录缺少权限
sudo chmod 771 /data01/MPP/mysql
sudo su - mysql
/opt/MPP/mysql-5.7.37-linux-glibc2.12-x86_64/bin/mysqld_safe --defaults-file=/etc/my.cnf &

#首次登陆修改密码
/opt/MPP/mysql-5.7.37-linux-glibc2.12-x86_64/bin/mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
-- 开启远程访问
use mysql;
update mysql.user set host='%' where user='root';
flush privileges; 
exit;


# 配置成服务
cd /opt/MPP/mysql-5.7.37-linux-glibc2.12-x86_64
sudo cp support-files/mysql.server /etc/init.d/mysql
sudo chown mysql:mysql /etc/init.d/mysql

#测试通过服务查看状态
sudo service mysql status 

二、主从同步配置

  1. 主机master配置

# 主库配置,登录主mysql并创建同步用户repl并授权(仅需要REPLICATION权限)
CREATE USER 'repl'@'10.37.62.94' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.37.62.94';
FLUSH PRIVILEGES;
# 查看状态,bin-log的文件名和当前位置在从机同步配置中有用
show master status;
  1. 从机slave配置

从机的my.cnf配置注意

从mysql和主mysql的配置基本相同,除了以下几个配置:
#从机server-id要和主机不同
server-id=2;
log_slave_updates=1
#开启同步函数
log_bin_trust_function_creators = 1

配置同步

# 从机配置开启同步替换文件名和查询的位置;
#设置主机master同步连接信息
change master to master_host='10.37.62.93', master_user='repl', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=2920;
#启动同步
start slave;
#查看同步状态
show slave status;

在这里插入图片描述

slave_IO_Running和Slave_SQL_Running都是Yes说明同步成功。
如果是No要看看是否是忘记了执行start slave;

测试

从主机建表插入数据,然后进入从机查看数据是否同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值