数据库的备份和还原往往是很重要的,在此简单记录一下
以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 -d <数据库名> -h <数据库服务器ip地址>

示例

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