MySql,Mongodb,Redis一些日常维护,操作的脚本

平时工作中因为都是云端部署,所以使用比较多的就是MySql,Mongodb,Redis等系统。平时需要用各种脚本对数据库做各种操作。在这里把各种脚本整理一下,大多数情况改改就可以在别的环境用了。

MySql

Docker运行MySql

脚本里面//表示注释,使用的时候要去掉

docker run -d \
--name mysql_master \  //容器名
-p 3306:3306 \  //暴露3306端口到宿主机
-v /data/mysql_master/mysqld.cnf:/etc/mysql/my.cnf \   //共享文件,把配置文件放到宿主机,方便修改
-v /data/mysql_master/data:/var/lib/mysql \  //共享文件,把数据放到宿主机,方便备份
-v /data/mysql_master/log:/var/log/mysql \  //共享文件,把日志放到宿主机,方便查询
-v /etc/localtime:/etc/localtime:ro \  //共享文件,把容器的时间和宿主机统一
-e MYSQL_ROOT_PASSWORD=xxxx \  //给定root账户密码
mysql:5.6  //指定mysql版本

对MySql容器进行数据备份或者恢复操作

进入容器内部环境
sudo docker exec -it mysql_master bin/bash
然后用
mysql -uroot -p进入mysql客户端,使用source恢复数据
或者直接用mysqldump备份数据

也可以在宿主机安装一个mysql的客户端
yum -y install mysql
因为之前已经把容器的3306端口暴露到了宿主机,那么在宿主机上直接用客户端操作3306端口就可以了

在Windows服务器上备份MySql

set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"  //获取当前时间

if not exist "D:\DatabaseBak\MySQL"  md "D:\DatabaseBak\MySQL"  //创建备份文件夹

if exist "D:\DatabaseBak\mysql_%Ymd%.sql"  del /q D:\DatabaseBak\mysql_%Ymd%.sql  //如果已经有备份文件,先删除

if exist "D:\DatabaseBak\MySQL\mysql_%Ymd%.zip"  del /q D:\DatabaseBak\MySQL\mysql_%Ymd%.zip  //如果已经有备份文件压缩包,先删除

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe" --default-character-set=utf8 -h localhost -P 3306 --databases db1 db2 -u root -pxxxx --add-drop-table -R> "D:/DatabaseBak/mysql_%Ymd%.sql"  //命令行含义分别是:使用安装在windows上面的客户端备份,设置导出文件的字符集(很重要),指定ip和端口,指定备份部分数据库,指定账号和密码,指定是否加上add和drop表的语句,配置导出存储过程
7z.exe  a "D:/DatabaseBak/mysql_%Ymd%.sql" "D:/DatabaseBak/mysql_%Ymd%.zip"  //用7zip的命令行工具做压缩

dump单个库文件

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe" -h localhost -P 3306 -uroot -pxxxx --hex-blob -B db1 > "D:\dumpfordelete\db.dump"

–hex-blob;这个命令是用于将BINARY, VARBINARY, BLOB, BIT类型导出为十六进制,这样再导入时不易产生错乱。
B参数可以备份多个数据库,可以把需要备份的数据库名字都写在后面

在Windows服务器上恢复MySql备份

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe" -h localhost -P 3306 -uroot -pxxxx< "D:/DatabaseBak/mysql.sql"

从一个很大的备份文件恢复某个特定的数据库

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe" -h localhost -P 3306 -uroot -pxxxx  -D onedatabase -o< "D:\DatabaseBak\mysql.sql" 

备份上传至远端的Linux服务器上

这里需要使用pscp.exe这个Command-line SCP/SFTP client。

pscp.exe -pw xxxx mysql.zip [email protected]:/data    // 命令行含义分别是:使用pscp工具,登录192.168.1.1这个linux服务器,使用root账号,密码为xxxx,把本地的mysql.zip文件传输到服务器的data目录下

这个命令可以使用于很多场景,不限于MySql。

命令行远程登录的Linux服务器上执行命令

这里需要使用putty.exe

start putty.exe 192.168.1.1 -ssh -l root -pw xxxx -P 22 -m command.txt // 命令行含义分别是:使用putty.exe工具,登录192.168.1.1这个linux服务器,使用root账号,密码为xxxx,登录端口为22,执行命令放在command.txt文件里面

command.txt写的命令如下:

unzip -o /data/mysql.zip -d /data/ &&    //解压zip文件
mysql -h 127.0.0.1 --password=xxxx --port=3306 -u root <<EOF   // 进入mysql命令行root账号
source /data/mysql.sql    // 使用source恢复mysql
EOF

这个命令同样可以使用于很多场景,不限于MySql。

通过批处理命令行执行Windows服务器上MySql的Sql语句

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe" -h localhost -P 3306 -uroot -pxxxx -e "USE database1;UPDATE `company SET name='demo' where Code=%1;"
// -e后面的是需要执行的SQL语句,注意语句里面有%1,这个是批处理的参数,所以可以通过这个方式,把批处理里面的参数传入到需要执行的SQL语句中

使用Windows版本MySQLProxy转发MySQL请求

D:\mysql-proxy\bin\mysql-proxy --proxy-backend-addresses=192.168.1.1:3306 --proxy-address=0.0.0.0:3306
//把192.168.1.1:3306端口上的mysql映射到本机的3306端口,这样访问本机的3306端口实际上就是方位192.168.1.1上3306的数据库服务

Mongodb

Docker运行Mongodb

docker run --name testmongodb -d \  //容器名
--cpuset-cpus=1 \  //如果宿主机是多核服务器,使用其中的第二个核
-m 1024m \  //限定最多使用1024m内存
-p 27017:27017 \  //暴露27017端口到宿主机
-v /data/mongo/db:/data/db \  //共享文件,把数据放到宿主机,方便备份
-v /etc/localtime:/etc/localtime:ro \  //共享文件,把容器的时间和宿主机统一
-v /data/mongo/dbconfig:/data/configdb \  //共享文件,把配置文件放到宿主机,方便修改
mongo:3.2   //指定mongodb版本

在Windows服务器上备份Mongodb

前面的一些清空备份的命令就不写了

"D:\mongodb\bin\mongodump.exe" -h localhost -d log -o "D:\DatabaseBak\MongoDBdump\mongodb_log" //备份localhost:27017(27017是默认的)上log这个database里面的数据,到后面D:\DatabaseBak\MongoDBdump\mongodb_log这个文件夹下面

在Windows服务器上恢复Mongodb备份

"D:\mongodb\bin\mongorestore.exe" -h 192.168.1.1:27017 -d log --directoryperdb "D:\DatabaseBak\MongoDBdump\mongodb_log" //恢复192.168.1.1:27017这个mongodb的服务器,恢复的database名为log,备份数据放在D:\DatabaseBak\MongoDBdump\mongodb_log文件夹下面

Redis

Docker运行Redis

docker run --name testredis -d \ //容器名
--cpuset-cpus=2 \  //如果宿主机是多核服务器,使用其中的第三个核
-m 1024m \  //限定最多使用1024m内存
-p 6379:6379 \  //暴露6379端口到宿主机
-v /data/redis:/data \  //共享文件,把数据持久化到宿主机,方便备份
-v /etc/localtime:/etc/localtime:ro \  //共享文件,把容器的时间和宿主机统一
redis:2.8  \  //指定redis版本
redis-server --appendonly yes  //配置Redis的数据持久化

如果这篇文章对你有一点帮助,请点击右上角的“赞同”。也欢迎留言和我交流。

猜你喜欢

转载自blog.csdn.net/s_swordman/article/details/89022554