目录1.数据库恢复基本事项2.利用source命令恢复数据库2.1.使用source命令恢复数据库的说明2.2.恢复演示3.利用Mysql命令恢复(标准)3.1.使用mysql命令恢复基本实践3.2.使用开发人员提交的sql语句恢
目录
MySQL命令以及source命令恢复数据库的原理就是在数据库里重新执行文件的SQL语句的过程。数据恢复和字符集的关联很大,如果字符集不正确则会导致恢复的数据乱码。
进入MySQL数据库控制台后,切换到想恢复数据的数据库。
接着,使用source命令进行恢复,后面接.sql文件。
source oldboy_db.sql
这个oldboy_db.sql文件是系统的相对路径,默认是登录MySQL前的系统路径,也可以使用完整的路径。
1、先执行一次正式的备份:
mysqldump -B --master-data=2 --single-transaction oldboy|gzip >/opt/oldboy.sql.gz
2、恢复前解压为SQL文件:
gzip -d /opt/oldboy.sql/gz
3、登录数据库删除oldboy数据库,然后准备用source恢复:
drop database oldboy;
select * from oldboy.test;
source /opt/oldboy.sql
select * from oldboy.test;
MySQL命令是MySQL数据库自带的重要命令之一,除了日常登录数据库之外,还可以通过Mysqldump备份的文件或者人工编辑的SQL语句文件对数据库进行数据恢复。
drop database oldboy;
mysql
假定开发人员让运维人员或DBA插入数据到数据库(可能是通过邮箱发送的,内容可能是字符串或者SQL文件)。
此时的SQL文件里很可能没有use db这样的字样,此时如果使用mysql命令导入就要指定数据库名。
mysql oldboy
指定库名oldboy的作用就相当于是在数据库里执行use oldboy,因此如果使用mysqldump备份时不使用-B参数,那么在恢复时不但可能会提示没有数据库,还可能会提示没有选择数据库。
并且在SQL语句文件里尽可能地加入字符集设置,以防止乱码。假设开发人员提交了N行插入语句,则需要插入到数据库。
insert into test(name) values("小陶");
文件里执行:
set names utf8;
insert into test(name) values("小陶");
如果是utf8数据库,人工编辑的SQL文件,使用“utf8”的格式。
恢复数据到数据库:
mysql
使用-B参数以后,备份结果中会带use oldboy和“create database oldboy”语句,而恢复时在mysql命令后指定库名就相当于是执行use oldboy。
mysql
gzip -d /opt/oldboy.sql.gz
mysql
!mysqldump #调用最近的mysqldump命令,重复执行备份。
mysqldump -B --master-data=2 --single-transaction oldboy|gzip >/opt/oldboy.sql.gz
gzip -cd /opt/oldboy.sql.gz >/opt/oldboy1.sql #特殊解压方法
mysql
gunzip -cd /opt/oldboy.sql.gz >/opt/oldboy.sql
mysql
zcat /opt/oldboy.sql.gz >/opt/oldboy3.sql
mysql
mysql命令提供了一个功能,可以让使用者无须登录数据库,在Linux命令行就可以执行SQL语句。
mysql -e "use oldboy;select * from test;"
mysql -e "show processlist;"
查看慢查询语句:
mysql -e "show full processlist;"
show full processlist;
kill id; #id=xxx
解决办法:
调整MySQL的超时参数配置:
show variables like "&_timeout%";
set global wait_timeout = 60;
set global interactive_timeout = 60;
配置文件里修改:
[mysqld]
interactive_timeout = 120 #此参数设置后wait_timeout自动生效
wait_timeout = 120
其他方法:
1、在PHP程序中,不使用持久链接,即使用mysql_connect而不是pconnect。
2、php程序执行完毕,应该显式调用mysql_close。
3、Java程序调整连接池(C3P0)或者调整JAVA服务(Tomcat有关连接池参数)。
4、逐步分析MySQL的SQL查询及慢查询日志,找到查询过慢的SQL,优化。
查看mysql的所有参数配置:
mysql -e "show variables;"
查看my.cnf配置文件的配置有没有在数据库中生效:
mysql -e "show variables like "log-bin";"
查看mysql数据库运行状态:
mysql -e "show global status;"|head -5
mysql -e "show variables;"|grep key_buffer
mysql -e "set global key_buffer_size = 1024*1024*16;"
mysql -e "show variables;"|grep key_buffer
实现不重启数据库更改数据库参数:
set global key_buffer_size = 1024*1024*16; #及时生效,重启mysql失效
show processlist; #查看数据库里正在执行的SQL语句,可能无法看全完整的SQL语句。
show full processlist; #查看正在执行的完整SQL语句,完整显示。
set global key_buffer_size = 1024*1024*16; #不重启数据库调整数据库参数,直接生效,重启后失效。
show variables; #查看数据库的配置参数信息。例如,my.cnf里参数的生效情况。
show variables like "%log_bin%";
kill ID; #杀掉SQL线程的命令,ID为线程号。
show session status; #查看当前会话的数据库状态信息。
show global status; #查看整个数据库运行的状态信息,要分析并要做好监控。
show engine innodb status; #显示innodb引擎的性能状态。
mysqladmin passWord oldboy123 #设置密码
mysqladmin -uroot -poldboy123 password oldboy #修改密码
mysqladmin -uroot -poldboy123 status #查看状态,相当于show status
mysqladmin -uroot -poldboy123 -i 1 status #每秒查看一次状态
mysqladmin -uroot -poldboy123 extended-status #等同于show global status
mysqladmin -uroot -poldboy123 flush-logs #切割日志
mysqladmin -uroot -poldboy123 processlist #查看执行的SQL语句信息
mysqladmin -uroot -poldboy123 processlist -i 1 #每秒查看一次执行的SQL语句
mysqladmin -uroot -p"oldboy123" shutdown #关闭mysql服务
mysqladmin -uroot -p"oldboy123" variables #相当于show variables
mysql命令常用参数 | 说明 |
---|---|
-u | 指定数据库用户 |
-p | 指定数据库密码 |
-S | 指定数据库Socket文件 |
-h | 指定数据库主机,默认localhost |
-P | 指定数据库端口,默认3306 |
-e | 不登录数据库执行数据库命令 |
--default-character-set=name | 指定字符集登录数据库或备份 |
--结束END--
本文标题: mysql数据库恢复
本文链接: https://lsjlt.com/news/6108.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0