本文主要是介绍阿里云 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
#开启mysql的binlog日志功能
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
#开启mysql的binlog日志功能
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;
这篇关于阿里云 podman docker MySQL8 主从复制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!