CentOS7中docker的安装使用

1.安装docker

1.设置docker仓库

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2.安装docker社区版

yum install docker-ce
#可选
yum install docker-ce-cli containerd.io
#安装具体版本
yum list docker-ce --showduplicates | sort -r #查询具体版本
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

3.启动docker

systemctl start docker

4.验证安装是否正确

docker run hello-world

5.设置docker加速器

cd /etc/docker/
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

参考

1.docker官网

2.mariadb主从docker部署

环境: 云服务器CentOS7

1.安装 docker-compose

pip3 install --upgrade pip
pip3 install  docker-compose 

注意

CentOS7预装了python3.6.8

2.开启云服务器防火墙端口主备机端口3307和3308

3.获取镜像

#查看镜像具体版本
docker search mariadb
#获取具体镜像
docker pull mariadb:10.1.48

4.配置数据库配置文件

前提:新建/opt/mariadb_master_salve目录

在mariadb_master_salve目录新建主节点配置文件 master.cnf

[client]
# 默认字符集
default-character-set=utf8mb4

[mysqld]
# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
# 允许最大链接数
max_connections=4096

# 服务器引擎
default-storage-engine=InnoDB

# 表名小写
# lower_case_table_names=1

# 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M

# binlog 格式 row statement mixed
binlog_format=mixed

# 忽略的数据库binlog
binlog-ignore-db=mysql,information_schema

# 到期自动删除
expire_logs_day=7

# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

# 设置server_id,一般设置为IP,注意要唯一
server-id=1

# bin-log
log_bin=mariadb-bin

在mariadb_master_salve目录新建从节点配置文件 slave.cnf

[client]
# 默认字符集
default-character-set=utf8mb4

[mysqld]
# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

# 服务器引擎
default-storage-engine=InnoDB

# 表名小写
# lower_case_table_names=1

# 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M

# binlog 格式 row statement mixed
binlog_format=mixed

# 忽略的数据库binlog
binlog-ignore-db=mysql,information_schema

# 到期自动删除
expire_logs_day=7

# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

# 设置server_id,一般设置为IP,注意要唯一
server-id=10

# bin-log
log_bin=slave-mariadb-bin

# 表示slave将复制事件写进自己的二进制日志
log_slave_updates=1

# 记录同步信息
relay-log=slave-relay-bin

# 防止改变数据(除了特殊的线程)
read_only=1

# 同步刷新binlog,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,
# 而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。
# sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘
# 1 最安全,但是最慢。 0 最快,但是风险最大
sync_binlog=0

5.配置docker-compose配置文件

在mariadb_master_salve目录新建 docker-compose.yml

version: "3"
services: 
  mariadb-master:
    image: mariadb:10.1.48
    container_name: mariadb-master
    restart: always
    ports:
      - "3307:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=mysql-666
    volumes:
      - ./master/data:/var/lib/mysql:cached
      - ./master.cnf:/etc/mysql/my.cnf:cached
    security_opt:
      - seccomp:unconfined
    logging: 
      driver: "json-file"
      options: 
        max-size: "500m"
    networks:
      - dev_network

  mariadb-slave:
    image: mariadb:10.1.48
    container_name: mariadb-slave
    restart: always
    ports:
      - "3308:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=mysql-666
    volumes:
      - ./slave/data:/var/lib/mysql:cached
      - ./slave.cnf:/etc/mysql/my.cnf:cached
    security_opt:
      - seccomp:unconfined
    logging: 
      driver: "json-file"
      options: 
        max-size: "500m"
    networks:
      - dev_network

networks:
  dev_network:
    external:
      name: dev_network

注意

1.需要针对mariadb-master,mariadb-slave的volumes中的本地目录进行新建

2.MYSQL_ROOT_PASSWORD字段不要修改为MARIADB_ROOT_PASSWORD字段

6.创建共用网络

docker network create dev_network

7.启动服务

docker-compose up -d
#查看服务器是否启动成功
docker ps

8.配置主节点数据库

#进入主机mariadb
docker exec -it mariadb-master /bin/bash
mysql -uroot -p密码
#查看是否已经开启log_bin
show variables like '%log_bin%'
#创建数据同步账号
create user 'slave'@'%' identified by '密码';
#授权
grant replication slave on *.* to 'slave'@'%';
#刷新权限
flush privileges;
#查看master节点当前状态
show master status;

9.配置从节点数据库

#进入从节点mariadb
docker exec -it mariadb-slave  /bin/bash
mysql -uroot -p密码
#连接主节点
change master to master_host='mariadb-master',master_port=3306,master_user='slave',master_password='密码',master_log_file='mariadb-bin.000003',
master_log_pos=785;
#开始同步
start slave
#查看是否同步成功,检查Slave_IO_Running 和 Slave_SQL_Running都是Yes状态
show slave status \G;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值