Mysql静态数据备份

基本原理:mysql读取的数据都存在data目录下面,所有我们只需要把217上的data目录拷贝到另外一台服务器上即可

背景:需要把217上的mysql数据库的所有数据复制到另外一台服务器上的mysql中,但是又发现服务器是用docker部署的,而且啥也不映射,无奈又研究了一下docker部署msyql,下面也会提一下,也是很简单

一、docker部署msyql

(参考链接:https://blog.csdn.net/lunfangyu/article/details/124837380)

1、在宿主机上找一个空间大的目录用来映射data文件和其他文件,命令df -h

2、在该目录中新建mysql目录,在mysql目录中新建data和logs目(命令:mkdir {data,logs}),给data,logs目录赋权777(命令:chmod 777 {data,logs})。再有配置文件也需要映射,所以我们需要建一个配置文件my.cnf,具体内容如下(复制即可)

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

# Docker安装最简配置, 仅必要目录属性

[mysqld]

pid-file= /var/run/mysqld/mysqld.pid

socket= /var/run/mysqld/mysqld.sock

datadir= /var/lib/mysql

log-error= /var/log/mysqld-error.log

slow-query-log-file= /var/log/slow-query.log

# 如果使用最简配置,则此行之后的配置可忽略

# 开启binlog

server_id=1

log_bin=mysql-bin

binlog_format=ROW

# 设置MySQL日志时区和主机一样;不设置的话默认为UTC

log_timestamps=SYSTEM

default_storage_engine = InnoDB

performance_schema_max_table_instances = 400

table_definition_cache = 400

lower_case_table_names = 1

skip-external-locking

key_buffer_size = 32M

max_allowed_packet = 100G

table_open_cache = 128

sort_buffer_size = 768K

net_buffer_length = 4K

read_buffer_size = 768K

read_rnd_buffer_size = 256K

myisam_sort_buffer_size = 8M

thread_cache_size = 16

query_cache_size = 16M

tmp_table_size = 32M

sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

character-set-server=utf8mb4

collation-server=utf8mb4_general_ci

explicit_defaults_for_timestamp = true

max_connections = 500

max_connect_errors = 100

open_files_limit = 65535

log-bin=mysql-bin

binlog_format=mixed

server-id = 1

expire_logs_days = 10

slow_query_log=1

long_query_time=3

early-plugin-load = ""

innodb_data_file_path = ibdata1:10M:autoextend

innodb_buffer_pool_size = 128M

innodb_log_file_size = 64M

innodb_log_buffer_size = 16M

innodb_flush_log_at_trx_commit = 1

innodb_lock_wait_timeout = 50

innodb_max_dirty_pages_pct = 90

innodb_read_io_threads = 1

innodb_write_io_threads = 1

[mysqldump]

quick

max_allowed_packet = 500M

[mysql]

no-auto-rehash

default-character-set=utf8mb4

[myisamchk]

key_buffer_size = 32M

sort_buffer_size = 768K

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

3、建好配置文件my.cnf还需要赋权,命令为:chmod 644 my.cnf,最后的 目录结构为

4、启动

docker run -itd \

--restart=always \

--name=mysql \

-p 3306:3306 \

-v /mnt/datadisk0/mysql/my.cnf:/etc/mysql/my.cnf \

-v /mnt/datadisk0/mysql/data:/var/lib/mysql \

-v /mnt/datadisk0/mysql/logs:/var/log \

-e MYSQL_ROOT_PASSWORD="123456" \

mysql:5.7

5、验证

使用终端或者navicat进行连接,具体连接就不展示了,之前部署mysql的文档有写,找不到百度一下。

二、Mysql静态备份

1、进入到217服务器,先停止mysql服务,service mysqld stop

2、将mysql的data目录压缩(命令为:tar -zcvf 文件名),找的方式为查看my.cnf配置文件:cat /etc/my.cnf

3.把压缩的data文件复制到服务器中(通过xftp传一下),解压(命令:tar -zxvf  压缩文件名),再赋权一下(名称不一样的话先改一下名称,改成data),chmod 777 data

4.把之前启动的mysql容器干掉,重新再启一个新的容器,命令为

强制杀掉容器:docker rm -f 容器名称/容器id

启动命令上面有写:docker run那一个就是

Note:用新的启动之后,整个数据库的信息跟217的一模一样了,包括密码,后面再连的话就需要用217的密码了

-------------------------------------------------------------自用--------------------------------------------------------------

  • 24
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值