数据库的备份和还原往往是很重要的,在此简单记录一下
以172.16.100.10为本机服务器地址,172.16.100.11为需要拷贝数据库的服务器地址
注意,选择的备份还原用户一定要有对应的数据库的权限,不然会备份/还原失败!!!!!
postgresql
备份
pg_dump -h <目标数据库服务器ip地址> -U <目标数据库用户名> -d <目标数据库名字> -p <目标数据库端口> -f <备份文件名>
示例
pg_dump -h 172.16.100.11 -U postgres -d demo -p 5432 -f /root/bak1.sql
还原
psql -h <还原数据库服务器ip地址> -U <还原数据库用户名> -d <还原数据库名字> -f <备份文件名>
示例
psql -h 172.16.100.10 -U postgres -d demo -f /root/bak1.sql
全备
pg_dumpall -h <目标数据库服务器ip地址> -U <目标数据库用户名> -p <目标数据库端口> -f <备份文件名>
示例
pg_dumpall -h 172.16.100.11 -U postgres -p 5432 -f /root/allbak1.sql
全备还原(无需指定 -d 参数)
psql -h <还原数据库服务器ip地址> -U <还原数据库用户名> -f <备份文件名>
示例
psql -h 172.16.100.10 -U postgres -f /root/allbak1.sql
还原.dump格式备份数据
pg_restore -U <还原数据库用户名> -d <还原数据库名字> <备份文件名>
示例
pg_restore -U postgres -d demo /root/bak1.dump
导出一张表
pg_dump -h <目标数据库服务器ip地址> -p <目标数据库端口> -U <目标数据库用户名> -d <目标数据库名字> -t <目标表名字> -a -f <备份文件名> #去掉-a是完整导出,加上-a是只导出数据
示例
不带-a参数的命令(会导出test表的完整定义,包括表结构和数据内容且生成的SQL文件包含CREATE TABLE语句和INSERT语句)
pg_dump -h 172.16.100.10 -p 5432 -U postgres -d demo -t test -f /root/test.sql
带-a参数的命令(仅导出test表的数据内容但不包含表结构,生成的SQL文件只包含INSERT语句-a是--data-only的简写形式)
pg_dump -h 172.16.100.10 -p 5432 -U postgres -d demo -t test -a -f /root/test.sql
还原表
psql -h <还原数据库服务器ip地址> -p <数据库端口>-U <还原数据库用户名> -d <还原数据库名字> -f <备份文件名>
示例
psql -h 172.16.100.10 -p 5432 -U postgres -d demo -f /root/test.sql
用指定用户连接数据库
psql -U
示例
psql -U postgres -d postgres -h 172.16.100.11
修改数据库名字
ALTER DATABASE <要重命名的数据库的名字> RENAME TO <数据库的新名字>;
示例
ALTER DATABASE name RENAME TO new_name;
#不能重命名仍有活动连接的数据库,否则 PostgreSQL 将给出一个错误
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='testdb' AND pid<>pg_backend_pid();
--- 注:testdb 替换成自己的数据库
这样可以清除当前的所有连接
mysql
备份
mysqldump -u [目标数据库用户名] -h [目标数据库服务器ip地址] -P [目标数据库端口]-p [目标数据库名] > [备份文件名].sql
示例
mysqldump -uroot -h 172.16.100.11 -P 3306 -p demo > /root/bak.sql
还原
mysql -u [还原数据库用户名] -p [还原数据库名] < [备份文件名].sql
示例
mysql -uroot -p demo < /root/bak.sql
或者: mysql -uroot -h 172.16.100.10 -p demo < /root/bak.sql
全备
mysqldump -u [目标数据库用户名] -p --all-databases > [备份文件名].sql
示例
mysqldump -u root -p --all-databases > /root/allmysqlbak.sql
还原
mysql -u [还原数据库用户名] -p < [备份文件名].sql
示例
mysql -u root -p < /root/allmysqlbak.sql
或者:登录mysql后执行下面的语句
mysql> source /root/allmysqlbak.sql;
用指定用户连接数据库
mysql -u [目标数据库用户名] -h [目标数据库服务器ip地址] -p
示例
mysql -uroot -h 172.16.100.11 -p