微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

阿里云 podman docker MySQL8 主从复制

podman pull MysqL 

mkdir -p /home/MysqL/MysqL-master/{data,log,conf}

!!!删除当前目录下一切!!!慎用
rm -rf ./*

在conf目录下,新增my.cnf,这个是MysqL本来就有的初始文件。之所以在宿主机也加,
是因为创建容器的时候,如果目录映射为空,容器内会报错找不到my.cnf而起不来
[MysqLd]
pid-file        = /var/run/MysqLd/MysqLd.pid
socket          = /var/run/MysqLd/MysqLd.sock
datadir         = /var/lib/MysqL
secure-file-priv= NULL

# Custom config should go here
!includedir /etc/MysqL/conf.d/

 podman run \
    -p 3306:3306 \
    -e MysqL_ROOT_PASSWORD=Sailorj5%5 \
    -v /home/MysqL/MysqL-master/data:/var/lib/MysqL:rw \
    -v /home/MysqL/MysqL-master/log:/var/log/MysqL:rw \
	-v /home/MysqL/MysqL-master/conf/:/etc/MysqL/conf.d:rw \
    -v /home/MysqL/MysqL-master/my.cnf:/etc/MysqL/my.cnf:rw \
    -v /etc/localtime:/etc/localtime:ro \
    --name MysqL-master\
    -d MysqL


podman logs -f --tail=100 MysqL-master 
podman exec -ti MysqL-master /bin/bash

登录MysqL
MysqL -u root -p
或者 MysqL -h localhost -u root -p
MysqL> select version();
MysqL版本号:8.0.15
使用MysqL数据库
MysqL> USE MysqL;
修改密码
MysqL> ALTER USER 'root'@'localhost' IDENTIFIED WITH MysqL_NATIVE_PASSWORD BY 'Sailorj5%5';
Query OK, 0 rows affected (0.01 sec)
刷新
MysqL> flush privileges;
验证是否修改成功
MysqL -u root -p
输入新密码
MysqL> USE MysqL;
用Navicat连接数据库,开启root用户远程访问权限:
MysqL> CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
Query OK, 0 rows affected (0.01 sec)
MysqL> GRANT ALL ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.01 sec)
MysqL> ALTER USER 'root'@'%' IDENTIFIED WITH MysqL_native_password BY '你的密码';
刷新
MysqL> flush privileges;

创建从数据库
mkdir -p /home/MysqL/MysqL-slave/{data,log,conf}
podman run \
    -p 3307:3306 \
    -e MysqL_ROOT_PASSWORD=Sailorj5%5 \
    -v /home/MysqL/MysqL-slave/data:/var/lib/MysqL:rw \
    -v /home/MysqL/MysqL-slave/log:/var/log/MysqL:rw \
	-v /home/MysqL/MysqL-slave/conf/:/etc/MysqL/conf.d:rw \
    -v /home/MysqL/MysqL-slave/my.cnf:/etc/MysqL/my.cnf:rw \
    -v /etc/localtime:/etc/localtime:ro \
    --name MysqL-slave\
    -d MysqL
podman exec -ti MysqL-slave /bin/bash

主从初始化启动成功,分别在外网3306接口、3307接口访问。

一、主库配置
USE MysqL;
CREATE USER 'copyuser'@'%' IDENTIFIED BY 'Sailorj5%5';
Grant replication slave on *.* to 'copyuser'@'%';
flush privileges;
建完后检查是否能远程登录


#主要server-id=1001和log-bin=MysqL-bin,一定要配置,其它的可以没有

[MysqLd]
#主节点ID,确保唯一
server-id=1001

#开启MysqLbinlog日志功能
log-bin=MysqL-bin
#控制数据库binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
sync_binlog=1
#binlog日志格式
binlog_format=MIXED
#binlog过期清理时间
expire_logs_days=7
#binlog每个日志文件大小
max_binlog_size=100m
#binlog缓存大小
binlog_cache_size=4m
#最大binlog缓存大小
max_binlog_cache_size=512m

#不生成日志文件数据库,多个忽略数据库可以用逗号拼接,或者 复制黏贴下述配置项,写多行
#binlog-ignore-db=MysqL

# 表中自增字段每次的偏移量
auto-increment-offset=1
# 表中自增字段每次的自增量
auto-increment-increment=1
#跳过从库错误
slave-skip-errors=all
#指定同步数据库,多个库设置多行
#binlog-do-db=sys_user

重启主库
pm restart MysqL-master

查看数据库是否启用二进制日志
Show variables like 'log_bin'

查看主机状态
show master status;

查看从机状态:
show slave status\G;

查看ip
hostname -I


二、从库配置

配置从数据库配置文件
[MysqLd]
server-id=1002
relay-log                    = /var/lib/MysqL/MysqL-relay
binlog_format=MIXED
#开启MysqLbinlog日志功能
log-bin=MysqL-bin
##表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
##slave设置为只读 #限定普通用户只读
read_only=1
#限定root只读
super_read_only=on
#指定同步数据库,多个库设置多行
#replicate-do-db=rtmart_auth   

1. reset slave;
Stop slave;
主从复制的最关键语句:
2. Change master to
         Master_host='47.116.142.35',	//主机的IP地址
         Master_user='copyuser',
         Master_password='Sailorj5%5',
         Master_log_file='MysqL-bin.000001',
         Master_log_pos=156;
3. Start slave;

show slave status;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐