Board logo

标题: Linux下MySQL的备份和还原 [打印本页]

作者: admin    时间: 2019-12-8 15:34     标题: Linux下MySQL的备份和还原

笺注:这是在 CentOS6.9编译安装Zabbix4.4.5 的基础上进行的。 先创建存放备份文件的目录: [root@Zabbix_server_01 ~]# mkdir -p /home/backup [root@Zabbix_server_01 ~]# chmod -R 777 /home/backup 确认备份命令mysqldump已经安装: [root@Zabbix_server_01 ~]# which mysqldump /usr/bin/mysqldump ### 在服务器本地备份单个库 ### [root@Zabbix_server_01 ~]# mysqldump -u"root" -p"888" -h"localhost" zabbix > /home/backup/zabbix_bak.sql [root@Zabbix_server_01 ~]# 注释: 备份库zabbix 使用数据库管理员root@localhost,密码为888 在服务器本地登录时, -h"localhost" 是可以省略的 备份出来的文件: [root@Zabbix_server_01 ~]# du -sh /home/backup/zabbix_bak.sql 3.5M /home/backup/zabbix_bak.sql [root@Zabbix_server_01 ~]# ### 在服务器本地还原单个库 ### 使用数据库管理员root@localhost登录MySQL: mysql -u"root" -p"888" -h"localhost" 图片1.png 注释:在服务器本地登录时, -h"localhost" 是可以省略的。 删除库zabbix:(还原前,最好删除旧库) mysql> drop database zabbix; Query OK, 149 rows affected (0.59 sec) 重新创建库zabbix,并指定其字符集: mysql> create database zabbix character set utf8 collate utf8_general_ci; Query OK, 1 row affected (0.00 sec) 切换到库zabbix: mysql> use zabbix; Database changed 以防中文出现乱码,最好先设置一下编码规则: mysql> set names utf8; Query OK, 0 rows affected (0.00 sec) 还原单个库(zabbix): mysql> source /home/backup/zabbix_bak.sql Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> 备注:实验中,库zabbix的还原是成功的。 ###### 在服务器本地自动创建库、表的Shell脚本: [root@Zabbix_server_01 ~]# cat create-database.sh #!/bin/bash mysql_user="root" mysql_password="888" mysql_database="data1" mysql -u$mysql_user -p$mysql_password << EOF > /dev/null Create database ${mysql_database} character set utf8 collate utf8_bin; Use ${mysql_database}; create table table1( id int not null auto_increment, number varchar(50) not null, name varchar(50), address varchar(50), primary key (id) ); create table table2( id int not null auto_increment, number varchar(50) not null, name varchar(50), address varchar(50), primary key (id) ); create table table3( id int not null auto_increment, number varchar(50) not null, name varchar(50), address varchar(50), primary key (id) ); EOF 运行脚本: [root@Zabbix_server_01 ~]# bash create-database.sh [root@Zabbix_server_01 ~]# 运行脚本后的结果: [root@Zabbix_server_01 ~]# mysql -u"root" -p"888" -h"localhost" -e"show create database data1;" +----------+---------------------------------------------------------------------------------+ | Database | Create Database | +----------+---------------------------------------------------------------------------------+ | data1 | CREATE DATABASE `data1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ | +----------+---------------------------------------------------------------------------------+ [root@Zabbix_server_01 ~]# 注释:创建了一个库data1,其字符集为 utf8_bin [root@Zabbix_server_01 ~]# mysql -u"root" -p"888" -e"use data1;show tables;" +-----------------+ | Tables_in_data1 | +-----------------+ | table1 | | table2 | | table3 | +-----------------+ [root@Zabbix_server_01 ~]# 注释:在库data1中创建了表table1、table2、table3 ###### 往库data1里的表table1中添加一条记录: Use data1; insert into table1 (number,name,address) values ('A001','zhuohua','佛山'); SELECT * FROM table1; 图片2.png ###### 往库data1里的表table2中添加一条记录: Use data1; insert into table2 (number,name,address) values ('B001','Python','广州'); SELECT * FROM table2; 图片3.png ###### 往库data1里的表table3中添加一条记录: Use data1; insert into table3 (number,name,address) values ('C001','Mary','深圳'); SELECT * FROM table3; 图片4.png ### 在服务器本地一次性备份多个库 ### [root@Zabbix_server_01 ~]# mysqldump -u"root" -p"888" --databases zabbix data1 > /home/backup/aa.sql [root@Zabbix_server_01 ~]# 注释:一次性备份多个库要加上参数“--databases”;多个库(zabbix、data1)之间使用空格隔开。 备份出来的文件: [root@Zabbix_server_01 ~]# du -sh /home/backup/aa.sql 3.7M /home/backup/aa.sql [root@Zabbix_server_01 ~]# ###### 备份成功后,删除库zabbix: mysql> drop database zabbix; Query OK, 149 rows affected (0.71 sec) mysql> mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | data1 | | mysql | | performance_schema | +--------------------+ 4 rows in set (0.00 sec) mysql> ###### 备份成功后,删除库data1里的表table1: Use data1; Drop table table1; mysql> SELECT * FROM data1.table1; ERROR 1146 (42S02): Table 'data1.table1' doesn't exist mysql> ###### 备份成功后,继续往库data1里的表table2中添加一条记录: Use data1; insert into table2 (number,name,address) values ('B002','Happy','广州'); SELECT * FROM data1.table2; 图片5.png ###### 备份成功后,继续往库data1里的表table3中添加一条记录: Use data1; insert into table3 (number,name,address) values ('C002','李大杰','广州'); SELECT * FROM table3; 图片6.png 再更改库data1的表table3的表名为table3_bak: Use data1; alter table table3 rename to table3_bak; show tables; 图片7.png ### 在服务器本地一次性还原多个库 ### [root@Zabbix_server_01 ~]# mysql -u"root" -p"888" < /home/backup/aa.sql [root@Zabbix_server_01 ~]# 注释: 只还原了库zabbix、data1,不影响不相关的库。 这种方法不用先创建库。 ###### 还原成功后,查看所有的库: 图片8.png 笺注:库zabbix的所有表都还原了。 被还原的库的字符集不会改变: mysql> show create database zabbix; +----------+-----------------------------------------------------------------+ | Database | Create Database | +----------+-----------------------------------------------------------------+ | zabbix | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+-----------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> mysql> show create database data1; +----------+---------------------------------------------------------------------------------+ | Database | Create Database | +----------+---------------------------------------------------------------------------------+ | data1 | CREATE DATABASE `data1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ | +----------+---------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> ###### 还原成功后,查看库data1里的表: 图片9.png ###### 还原成功后,查看库data1的表table1的表数据: 图片10.png ###### 还原成功后,查看库data1的表table2的表数据: 图片11.png ###### 还原成功后,查看库data1的表table3的表数据: 图片12.png ###### 还原成功后,查看库data1的表table3_bak的表数据: 图片13.png 结论: 还原某个库时,假如库里的某个表不存在,会还原备份文件里的表; 假如表名重复,会被备份文件里的表直接替换;假如表名不重复,则不处理。 ###### 还原成功后,删除库data1的表table3,再更改库data1的表table3_bak的表名为table3: mysql> drop table data1.table3; Query OK, 0 rows affected (0.00 sec) mysql> alter table data1.table3_bak rename to data1.table3; Query OK, 0 rows affected (0.00 sec) mysql> mysql> use data1; Database changed mysql> show tables; +-----------------+ | Tables_in_data1 | +-----------------+ | table1 | | table2 | | table3 | +-----------------+ 3 rows in set (0.00 sec) mysql> 注释:这样就可以实现只还原某个库里的一些表了。 ### 使用脚本在服务器本地备份数据库 ### (只备份库zabbix) [root@Zabbix_server_01 ~]# cat backup_local_1.sh #!/bin/bash mysql_user="root" mysql_password="888" conn="-u$mysql_user -p$mysql_password" mysql_database="zabbix" dir="/home/backup" #备份文件存放的目录要先创建好,并设置好权限 cmd="/usr/bin/mysqldump" #备份命令的路径使用which mysqldump查询 time=`date +%Y%m%d` #时间格式:年月日 mysql_name="$mysql_database-$time" cd $dir/ $cmd $conn $mysql_database > $mysql_name.sql 设置脚本权限: [root@Zabbix_server_01 ~]# chmod a+x backup_local_1.sh [root@Zabbix_server_01 ~]# 运行脚本: [root@Zabbix_server_01 ~]# bash backup_local_1.sh [root@Zabbix_server_01 ~]# 运行脚本后的结果:(备份成功) [root@Zabbix_server_01 ~]# du -ah /home/backup/ 4.0M /home/backup/zabbix-20200208.sql 3.5M /home/backup/zabbix_bak.sql 3.7M /home/backup/aa.sql 12M /home/backup/ [root@Zabbix_server_01 ~]# ### 使用脚本在服务器本地备份数据库 ### (备份库zabbix、data1) [root@Zabbix_server_01 ~]# cat backup_local_2.sh #!/bin/bash mysql_user="root" mysql_password="888" conn="-u$mysql_user -p$mysql_password" mysql_database="zabbix data1" dir="/home/backup" cmd="/usr/bin/mysqldump" time=`date +%Y%m%d_%H%M%S` #时间格式:年月日_时分秒 mysql_name="bb-$time" #备份文件的名称 cd $dir/ $cmd $conn --databases $mysql_database > $mysql_name.sql 设置脚本权限: [root@Zabbix_server_01 ~]# chmod a+x backup_local_2.sh [root@Zabbix_server_01 ~]# 运行脚本: [root@Zabbix_server_01 ~]# bash backup_local_2.sh [root@Zabbix_server_01 ~]# 运行脚本后的结果:(备份成功) [root@Zabbix_server_01 ~]# du -ah /home/backup/ 4.0M /home/backup/zabbix-20200208.sql 3.5M /home/backup/zabbix_bak.sql 3.7M /home/backup/aa.sql 4.0M /home/backup/bb-20200208_135445.sql 16M /home/backup/ [root@Zabbix_server_01 ~]# ### 使用脚本在远程服务器备份数据库 ### 被备份的服务器(192.168.168.130)要创建一个远程数据库用户并授权: 授权远程数据库用户zhuohua@'192.168.168.154'(密码886),仅仅在使用IP地址192.168.168.154时可以进行访问,对所有的库有完全控制的权限: [root@Zabbix_server_01 ~]# mysql -u"root" -p"888" -e"grant all on *.* to zhuohua@'192.168.168.154' identified by '886';" [root@Zabbix_server_01 ~]# 查看远程数据库用户zhuohua@'192.168.168.154'的权限: [root@Zabbix_server_01 ~]# mysql -u"root" -p"888" -e"show grants for zhuohua@'192.168.168.154';" +-------------------------------------------------------------------------------------------------------------------------------+ | Grants for zhuohua@192.168.168.154 | +-------------------------------------------------------------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'zhuohua'@'192.168.168.154' IDENTIFIED BY PASSWORD '*F961C54AFEB4D281CE53D7CB8E7822890D86FFFC' | +-------------------------------------------------------------------------------------------------------------------------------+ [root@Zabbix_server_01 ~]# 编辑防火墙规则:(打开TCP 3306端口) [root@Zabbix_server_01 ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT [root@Zabbix_server_01 ~]# iptables-save > /etc/sysconfig/iptables ############ Linux客户端远程登录MySQL服务器: [root@centos8 ~]# mysql -u"zhuohua" -p"886" -h"192.168.168.130" 图片14.png 注释: MySQL服务器的IP地址 192.168.168.130 数据库用户名 zhuohua 密码 886 端口 3306 笺注: Linux客户端需要安装MySQL或MariaDB Linux客户端的IP地址为 192.168.168.154 使用数据库用户zhuohua@'192.168.168.154' 在Linux客户端查看数据库里有哪些库: MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | data1 | | mysql | | performance_schema | | zabbix | +--------------------+ 5 rows in set (0.001 sec) MySQL [(none)]> 注释:远程数据库用户 zhuohua@'192.168.168.154' 可以登录MySQL,对所有的库有完全控制的权限。 在Linux客户端确认备份命令mysqldump已经安装: [root@centos8 ~]# which mysqldump /usr/bin/mysqldump 在Linux客户端先创建存放备份文件的目录: [root@centos8 ~]# mkdir -p /backup [root@centos8 ~]# chmod -R 777 /backup ### 在Linux客户端远程备份单个库(zabbix) ### [root@centos8 ~]# mysqldump -u"zhuohua" -p"886" -h"192.168.168.130" zabbix > /backup/zabbix_bak.sql [root@centos8 ~]# 备份出来的文件: [root@centos8 ~]# du -sh /backup/zabbix_bak.sql 4.2M /backup/zabbix_bak.sql [root@centos8 ~]# ### Linux客户端远程备份数据库的脚本 ### (只备份库zabbix) [root@centos8 ~]# cat backup_remote_1.sh #!/bin/bash mysql_user="zhuohua" mysql_password="886" mysql_host="192.168.168.130" #被备份的服务器的IP地址 conn="-u$mysql_user -p$mysql_password -h$mysql_host" mysql_database="zabbix" dir="/backup" cmd="/usr/bin/mysqldump" #使用Linux客户端的备份命令mysqldump time=`date +%Y%m%d` mysql_name="$mysql_database-$time" cd $dir/ $cmd $conn $mysql_database > $mysql_name.sql 设置脚本权限: [root@centos8 ~]# chmod a+x backup_remote_1.sh [root@centos8 ~]# 运行脚本: [root@centos8 ~]# bash backup_remote_1.sh [root@centos8 ~]# 备份出来的文件: [root@centos8 ~]# du -ah /backup/ 4.2M /backup/zabbix_bak.sql 3.6M /backup/zabbix-20210423.sql 7.7M /backup/ [root@centos8 ~]# ### Linux客户端远程备份数据库的脚本 ### (备份库zabbix、data1) [root@centos8 ~]# cat backup_remote_2.sh #!/bin/bash mysql_user="zhuohua" mysql_password="886" mysql_host="192.168.168.130" #被备份的服务器的IP地址 conn="-u$mysql_user -p$mysql_password -h$mysql_host" mysql_database="zabbix data1" dir="/backup" cmd="/usr/bin/mysqldump" time=`date +%Y%m%d_%H%M%S` mysql_name="bb-$time" cd $dir/ $cmd $conn --databases $mysql_database > $mysql_name.sql 设置脚本权限: [root@centos8 ~]# chmod a+x backup_remote_2.sh [root@centos8 ~]# 运行脚本: [root@centos8 ~]# bash backup_remote_2.sh [root@centos8 ~]# 备份出来的文件: [root@centos8 ~]# du -ah /backup/ 4.2M /backup/zabbix_bak.sql 3.6M /backup/zabbix-20220423.sql 3.6M /backup/bb-20210423_153142.sql 12M /backup/ [root@centos8 ~]# 相关文章: MySQL的字符集 MySQL5.6使用mysql_config_editor 使用SQLyog远程管理MySQL LNMP一键安装包(lamp_Apache2.4用户验证+phpMyAdmin) 本地备份站点目录和数据库+crontab计划任务 远程备份站点目录和数据库+at一次性计划任务 CentOS6使用Python3脚本备份站点(Zabbix)+crontab计划任务 Windows下MySQL的备份和还原

图片附件: 图片1.png (2022-4-23 21:20, 156.89 KB) / 下载次数 83
http://blog.zhuohua.store/attachment.php?aid=19813&k=b2c1557903b2e12b4563135be0ace5f7&t=1714736014&sid=f34AFa



图片附件: 图片2.png (2022-4-23 21:22, 36.07 KB) / 下载次数 87
http://blog.zhuohua.store/attachment.php?aid=19814&k=f7ae32f3c61b6a4b5863e20af43e1cc9&t=1714736014&sid=f34AFa



图片附件: 图片3.png (2022-4-23 21:23, 35.9 KB) / 下载次数 88
http://blog.zhuohua.store/attachment.php?aid=19815&k=33671d006ae13a62210bf083bc8754d5&t=1714736014&sid=f34AFa



图片附件: 图片4.png (2022-4-23 21:23, 36.9 KB) / 下载次数 81
http://blog.zhuohua.store/attachment.php?aid=19816&k=3e114bc81932436359477ddb2de5ba40&t=1714736014&sid=f34AFa



图片附件: 图片5.png (2022-4-23 21:24, 43.48 KB) / 下载次数 85
http://blog.zhuohua.store/attachment.php?aid=19817&k=46c70aa0aeb7f069fec2785dcbfb1005&t=1714736014&sid=f34AFa



图片附件: 图片6.png (2022-4-23 21:25, 45.45 KB) / 下载次数 82
http://blog.zhuohua.store/attachment.php?aid=19818&k=df29dee667deeaf9cf774a17388af801&t=1714736014&sid=f34AFa



图片附件: 图片7.png (2022-4-23 21:25, 32.11 KB) / 下载次数 83
http://blog.zhuohua.store/attachment.php?aid=19819&k=f7f813c2aa95dcf5ee9f32b9e5401dd0&t=1714736014&sid=f34AFa



图片附件: 图片8.png (2022-4-23 21:26, 42.83 KB) / 下载次数 89
http://blog.zhuohua.store/attachment.php?aid=19820&k=3e11e3445c700411933613f984e263d5&t=1714736014&sid=f34AFa



图片附件: 图片9.png (2022-4-23 21:29, 49.65 KB) / 下载次数 75
http://blog.zhuohua.store/attachment.php?aid=19821&k=36378aafb37805ad954c638904e4e688&t=1714736014&sid=f34AFa



图片附件: 图片10.png (2022-4-23 21:29, 36.64 KB) / 下载次数 78
http://blog.zhuohua.store/attachment.php?aid=19822&k=726dedf4a6f79cedbbe3552e5d5f01f6&t=1714736014&sid=f34AFa



图片附件: 图片11.png (2022-4-23 21:30, 36.92 KB) / 下载次数 75
http://blog.zhuohua.store/attachment.php?aid=19823&k=81a2c9d31f943155ba933f161a9025f2&t=1714736014&sid=f34AFa



图片附件: 图片12.png (2022-4-23 21:30, 37.9 KB) / 下载次数 88
http://blog.zhuohua.store/attachment.php?aid=19824&k=64ba886b5c077ec01a8598f42d27e022&t=1714736014&sid=f34AFa



图片附件: 图片13.png (2022-4-23 21:30, 47.21 KB) / 下载次数 82
http://blog.zhuohua.store/attachment.php?aid=19825&k=1030697c44b0b4c663b808ca0309a7ce&t=1714736014&sid=f34AFa



图片附件: 图片14.png (2022-4-23 21:33, 126.98 KB) / 下载次数 47
http://blog.zhuohua.store/attachment.php?aid=19826&k=0f36a2b9560ee1c4ad5ece9146e4c01a&t=1714736014&sid=f34AFa






欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2