ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

阿里云 podman docker MySQL8 主从复制

2022-08-05 14:02:03  阅读:206  来源: 互联网

标签:binlog slave log MySQL8 podman master mysql home docker


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;

标签:binlog,slave,log,MySQL8,podman,master,mysql,home,docker
来源: https://www.cnblogs.com/bigsheng15/p/16553446.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有