zoukankan      html  css  js  c++  java
  • 冷备份MySQL数据库并且使用Docker直接运行的操作过程

    备份数据库


    • 查看数据库的数据文件的位置
      systemctl status mysqld 查看启动进程以及防水
      /etc/my.conf 查看datadir 指向Mysql数据库的存储数据路径.
    • 关闭数据库
      systemctl stop mysqld
    • 备份数据库数据文件
      mkdir /mysqlindocker && time scp -r /var/lib/mysql /mysqlindocker
      scp /etc/my.cnf /mysqlindocker/
      mkdir /mysqlindocker/log
      mkdir /mysqlindocker/mysql-files
      chown mysql:mysql /mysqlindocker/ -R && chmod 777 /mysqlindocker -R
      chmod 644 /mysqlindocker/my.cnf

    拉取mysql的镜像


    • 从docker hub 拉取
      docker pull mysql:8.0.25
    • 可以从可以上网的机器上面备份好之后再执行导出和导出
      docker save mysql:8.0.25 -o /mysql_docker_8025.tar
    • 复制到当前机器上面后执行导入操作
      docker load -i /mysql_docker_8025.tar

    使用命令拉起来mysql数据库

    • 直接写命令
    docker run --name mysql3307 -p 3307:3306 -v /mysqlindocker/mysql:/var/lib/mysql  -v /mysqlindocker/mysql-files:/var/lib/mysql-files -v /mysqlindocker/my.cnf:/etc/my.cnf -v /mysqlindocker/log:/var/log  -e MYSQL_ROOT_PASSWORD=Test20131127 -e TZ=Asia/Shanghai -d mysql:8.0.25
    

    配置参数说明

    • my.conf 的参数说明
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    max_allowed_packet = 1G
    innodb_log_file_size = 30M
    innodb_log_buffer_size = 256M
    innodb_buffer_pool_size=2G
    innodb_file_per_table = 1
    max_connections=2000
    lower-case-table-names=1
    innodb_strict_mode = 0
    character_set_server=utf8
    default-time-zone='+8:00'
    transaction-isolation = READ-COMMITTED
    default_authentication_plugin=mysql_native_password
    binlog_expire_logs_seconds  = 7200
    [mysql]
    default-character-set=utf8
    prompt="\\u@\\h : \\d \\r:\\m:\\s>"
    

    配置参数说明

    • datadir 指代数据目录
    • innodb 指代log文件以及内存占用大小,可以进行调整以适应不同的并发情况.
    • max_connections 标明数据库能够提供的访问并发数量.
    • lower-case-table-names 标明建库时数据库表名的大小写模式.
    • innodb-strict-mode 标明可以避免部分异常SQL的异常提示, 造成环境安装和使用中断.
    • utf8 使用了utf8mb3的字符集, 因为erp应用会使用较多的字段数,使用其他字符集可能导致单表的总字符长度数不够的问题.
    • time-zone 标明时区
    • read-committed 标明可重复读的模式.
    • 标明mysql的密码格式.
    • binlog_expire_logs_seconds 标明binlog的过期时间, 测试环境可以设置的比较小, 不然会占用较多的磁盘.
    • 标明客户端的字符集.
    • 标明mysql 登录时的提示信息,避免自己输入错误了.

    Docker 命令说明


    docker run 正常运行容器的命令
    --name mysql3307  只对容器的名字,便于进行容器的启停查看log等.
    -p 3307:3306  将端口expose 出来,需要注意的是 前面的是主机的端口, 后面的是容器内的端口
    -v /mysqlindocker/mysql:/var/lib/mysql    这个定义的是 数据文件
    -v /mysqlindocker/mysql-files:/var/lib/mysql-files  需要增加一个空文件 尽心初始化使用
    -v /mysqlindocker/my.cnf:/etc/my.cnf  指定自己的配置文件到容器内部, 需要注意的是这个文件 需要 644的执行权限才可以
    -v /mysqlindocker/log:/var/log   增加系统log目录
    -e MYSQL_ROOT_PASSWORD=Test20131127  必须指定一个root密码,但是如果 -v 了存储目录 会使用内部的密码来代替这个密码
    -e TZ=Asia/Shanghai   指定时区, 修改为东八区
    -d mysql:8.0.25 指定镜像以及版本
    
  • 相关阅读:
    Codeforces Round #688 (Div. 2)B. Suffix Operations(思维+贡献)
    Codeforces Round #688 (Div. 2)C. Triangles(思维+贪心)
    Codeforces Round #689 (Div. 2, based on Zed Code Competition)D. Divide and Summarize(分治+dfs)
    Codeforces Round #689 (Div. 2, based on Zed Code Competition)C. Random Events(思维)
    Codeforces Round #689 (Div. 2, based on Zed Code Competition)B. Find the Spruce(dp + 重复利用)
    Educational Codeforces Round 101 (Rated for Div. 2)D. Ceil Divisions(思维)
    Educational Codeforces Round 101 (Rated for Div. 2)C. Building a Fence(思维+区间处理)
    Codeforces Round #693 (Div. 3)G. Moving to the Capital(dfs)
    Codeforces Round #693 (Div. 3)E. Correct Placement
    Git 学习笔记02丨Git 分支
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/15524296.html
Copyright © 2011-2022 走看看