mysql部署时常用配置_mysql主从架构部署和配置

mysql主从架构部署和配置

1. mysql常见集群架构

主从架构(Master-Slaves)

b3afaaf876c88240596e08eedc19ddaa.png

在实际应用场景中,mysql集群90%是按照这种架构模式部署的。

缺点:

master节点不能停机,停机就不能接收写请求。

slave同步数据时会出现延迟。

数据同步是单向的,当master停机,提升某个slave成为master时,就会和之前的master数据不一致。

双主架构(Master-Master)

72ff7698cba06494c83d6583ab6a0057.png

两个mysql实例相互同步数据。

主从级联架构(Master-Slaves-Slaves)

c10362bc8b372125a4ed3c17ea4b1942.png

解决读压力特别大的问题,缺点是slave延迟更加大了。

双主+级联架构

708f793300af7574c4937ccc283a0937.png

这样解决了master单点问题。

2. 部署mysql主从架构

2.1. mysql常用命令

# 下载Mysql源安装包

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

# yum安装mysql源

yum localinstall mysql57-community-release-el7-8.noarch.rpm -y

# 检查mysql源是否安装成功

yum repolist enabled | grep "mysql.*-community.*"

# yum安装Mysql

yum install mysql-community-server -y

# 启动Mysql服务

systemctl start mysqld

# 并添加开机启动

systemctl enable mysqld systemctl daemon-reload

# 查看Mysql状态

systemctl status mysqld

# 查看默认的mysql密码

vi /var/log/mysqld.log

# 修改mysql的密码

# 登录mysql,输入原始密码: =>g6hj.Nx4e (上面查看的原始密码)

mysql -uroot -p

# 修改mysql的密码

set password for 'root'@'localhost'=password('123456');

# 添加远程登陆的用户权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

# 刷新权限

FLUSH PRIVILEGES;

# 接下来一些常用操作

# 修改mysql字符编码

vi /etc/my.cnf

# 添加

character_set_server=utf8

init_connect='SET NAMES utf8'

# 重启Mysql

systemctl stop mysqld

systemctl start mysqld

# 查看Mysql字符集

show variables like '%character%'

# 卸载

rpm -qa|grep -i mysql

yum remove mysql-community-server -y

rpm -ev mysql-community-libs-5.7.24-1.el7.x86_64 --nodeps

# 删除文件

find / -name mysql

rm -rf /var/lib/mysql

rm -rf /etc/my.cnf

2.2. docker安装mysql

接下来用docker安装两个mysql实例,并配置主从架构。

使用docker命令安装两个mysql实例:

docker run --name mysql3307 -p 3307:3306 --privileged=true -ti -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=yc_test -e MYSQL_USER=yc -e MYSQL_PASSWORD=123456 -v /data/canyang3/docker-data/mysql3307/conf:/etc/mysql/conf.d -v /data/canyang3/docker-data/mysql3307/data/:/var/lib/mysql -v /data/canyang3/docker-data/mysql3307/logs/:/var/log/mysql -d mysql:5.7

docker run --name mysql3308 -p 3308:3306 --privileged=true -ti -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=yc_test -e MYSQL_USER=yc -e MYSQL_PASSWORD=123456 -v /data/canyang3/docker-data/mysql3308/conf:/etc/mysql/conf.d -v /data/canyang3/docker-data/mysql3308/data/:/var/lib/mysql -v /data/canyang3/docker-data/mysql3308/logs/:/var/log/mysql -d mysql:5.7

docker命令解读:

docker run

--name mysql3307 # 定义镜像别名

-p 3307:3306 # 映射端口号

--privileged=true # docker镜像获取宿主机root权限

-it # 分配一个伪终端

-e MYSQL_ROOT_PASSWORD=123456 # 设置mysql root密码为123456

-e MYSQL_DATABASE=yc_test # 创建默认数据库

-e MYSQL_USER=yc # 添加mysql用户

-e MYSQL_PASSWORD=123456 # 添加mysql用户密码

-v /data/canyang3/docker-data/mysql3307/conf:/etc/mysql/conf.d # 挂载指定目录到宿主机

-v /data/canyang3/docker-data/mysql3307/data/:/var/lib/mysql

-v /data/canyang3/docker-data/mysql3307/logs/:/var/log/mysql

-d mysql:5.7 # 后台运行容器并返回容器ID

进入docker镜像,查看mysql状态

docker exec -it mysql3307 /bin/bash

service mysql status

2.2. 配置mysql主从关系

创建master mysql的配置,重启镜像 vim /data/canyang3/docker-data/mysql3307/conf/my.cnf

# 添加

[mysqld]

port=3306

character_set_server=utf8

init_connect='SET NAMES utf8'

default-storage-engine=INNODB

symbolic-links=0

lower_case_table_names=1

server-id=10001

log-bin=mysql-bin

auto_increment_increment=2

auto_increment_offset=1

plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=10000

创建slave mysql的配置,重启镜像 vim /data/canyang3/docker-data/mysql3308/conf/my.cnf

# 添加

[mysqld]

port=3306

character_set_server=utf8

init_connect='SET NAMES utf8'

default-storage-engine=INNODB

symbolic-links=0

lower_case_table_names=1

server-id=10002

log-bin=mysql-bin

auto_increment_increment=2

auto_increment_offset=2

plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=10000

在master库中添加同步数据账号 GRANT REPLICATION SLAVE,FILE,REPLICATION CLIENT ON *.* TO 'repluser'@'%' IDENTIFIED BY '123456';

FLUSH PRIVILEGES;

# 查看二进制日志

show master status;

在slave中设置master信息 change master to master_host='172.31.63.26',master_port=3307,master_user='repluser',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=3111;

# 开启slave,启动sql和IO线程

start slave;

# 查看slave的状态

show slave status\G

其他命令 # 锁表master

flush table with read lock;

# 备份master

mysqldump -uroot -p123456 --databases consult mall > back.sql;

# 导入slave

mysql -uroot -p123456 < back.sql;

# 解锁master

unlock tables;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值