暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL数据库的备份及恢复

若泽大数据 2020-06-11
5261

采用mysqldump工具备份

mysqldump工具的备份和恢复

备份整个数据库

    $> mysqldump -u root -h host -p dbname > backdb.sql

    备份数据库中的某个表

      $> mysqldump -u root -h host -p dbname tbname1, tbname2 > backdb.sql

      备份多个数据库

        $> mysqldump -u root -h host -p --databases dbname1, dbname2 > backdb.sql

        备份系统中所有数据库

          $> mysqldump -u root -h host -p --all-databases > backdb.sql


          重新导回去只需要运行sql就行了

          方法一、进入命令行

            mysql –uroot –p -Dtest < /home/pearfl/create_table.sql

            方法二、进入mysql控制台

              source 【sql脚本文件的路径全名】

              \. 【sql脚本文件的路径全名】

              直接复制整个数据库目录(对于InnoDB存储引擎不适用)备份

              windowns: installpath/mysql/data

              linux: var/lib/mysql

              在复制前需要先执行如下命令:

                MYSQL> LOCK TABLES;
                # 在复制过程中允许客户继续查询表,
                MYSQL> FLUSH TABLES;
                # 将激活的索引页写入硬盘。

                mysqlhotcopy工具备份

                备份数据库或表最快的途径,只能运行在数据库目录所在的机器上,并且只能备份MyISAM类型的表。

                要使用该备份方法必须可以访问备份的表文件。

                  $> mysqlhotcopy -u root -p dbname path/to/new_directory;
                  #将数据库复制到new_directory目录。

                  mysql命令导入sql文件还原

                    $> mysql -u root -p [dbname] < backup.sql
                    # 执行前需要先创建dbname数据库,如果backup.sql是mysqldump创建的备份文件则执行是不需要dbname。
                    MYSQL> source backup.sql;
                    # 执行source命令前需要先选择数据库。

                    直接复制数据库目录还原

                    注:该方式必须确保原数据库和待还原的数据库主版本号一致,并且只适用于MyISAM引擎的表。

                    1. 关闭mysql服务。

                    2. 将备份的文件或目录覆盖mysql的data目录。

                    3. 启动mysql服务。

                    4. 对于linux系统,复制完文件后需要将文件的用户和组更改为mysql运行的用户和组。

                    mysqlhotcopy快速恢复

                    停止mysql服务,将备份数据库文件复制到存放数据的位置(mysql的data文件夹),重先启动mysql服务即可(可能需要指定数据库文件的所有者)。

                    $> cp -R usr/backup/test usr/local/mysql/data
                    # 如果恢复的数据库已经存在,则使用DROP语句删除已经存在的数据库之后,恢复才能成功,还需要保证数据库版本兼容。

                    相同版本数据库之间迁移

                      $> mysqldump -h www.abc.com -uroot -p password dbname | 
                      $> mysqldump -h www.bcd.com -uroot -p password
                      # 将服务器www.abc.com的数据库dbname迁移到服务器www.bcd.com的相同版本数据库上。

                      不同版本的mysql数据库之间的迁移

                      备份原数据库。

                      卸载原数据库。

                      安装新数据库。

                      在新数据库中还原备份的数据库数据。

                      数据库用户访问信息需要备份mysql数据库。

                      默认字符集问题,MySQL4.x中使用latin1作为默认字符集,mysql5.x使用utf8作为默认字符集。如果有中文数据需要对默认字符集进行更改。

                      不同数据库之间的迁移。

                      MyODBC工具实现MySQL和SQL Server之间的迁移。

                      MySQL Migration Toolkit工具

                      表的导出和导入

                      SELECT …… INTO OUTFILE 导出文本文件,该方法只能导出到数据库服务器上,并且导出文件不能已存在。

                        MYSQL> SELECT ...... INTO OUTFILE filename [OPTIONS]
                        MYSQL> SELECT * FROM test.person INTO OUTFILE "C:\person0.txt";
                        # 将表person里的数据导入为文本文件person0.txt。

                        mysqldump文件导出文本文件(和INTO OUTFILE不一样的是该方法所有的选项不需要添加引号)

                          $> mysqldump -T path -u root -p dbname [tables] [OPTIONS]
                          # -T参数表明导出文本文件。path导出数据的目录。
                          $> mysqldump -T C:\test person -u root -p
                          # 将test表中的person表导出到文本文件。执行成功后test目录下会有两个文件,person.sql和person.txt

                          mysql命令导出文本文件

                            MYSQL> mysql -u root -p --execute="SELECT * FROM person;" test > C:\person3.txt;
                            #test数据库中的person表数据导出到person3.txt文本文件中。--vartical参数可以将一行分为多行显示。
                            MYSQL> mysql -u root -p --vartical --execute="SELECT * FROM person;" test > C:\person3.txt;
                            # --html将表导出为html文件,--xml文件将表导出为xml文件

                            LOAD DATA INFILE导入文本文件

                              MYSQL> LOAD DATA INFILE 'filename.txt' INTO TABLE tablename [OPTIONS] [IGNORE number LINES];
                              # [IGNORE number LINES]表示忽略行数
                              MYSQL> LOAD DATA INFILE 'C:\person0.txt' INTO TABLE test.person;

                              mysqlimport导入文本文件

                                $> mysqlimport -u root -p dbname filename.txt [OPSTONS]
                                # 导入的表名由文件名决定,导入数据之前表必须存在
                                $> mysqlimport -uroot -p test C:\backup\person.txt
                                # 将数据导入到test数据库的person表中。

                                使用mysqlbinlog恢复数据

                                  $> mysqlbinlog [option] filename | mysql -u user -p password
                                  # filename为二进制日志文件,
                                  $> mysqlbinlog --stop-date="2013-03-30 15:27:47" D:\MySQL\log\binlog\binlog.000008 | mysql -u root -p password
                                  # 根据日志文件binlog.000008将数据恢复到2013-03-30 15:27:47以前的操作。

                                  启动二进制日志

                                    log-bin = path/filename  #日志文件存储目录和文件名
                                    expire_log_days = 10 #日志自动删除时间
                                    max_binlog_size = 100M # 日志文件最大大小

                                    查看二进制日志

                                      MYSQL> SHOW VARIABLES LIKE 'log_%';
                                      MYSQL> SHOW BINARY LOGS;
                                      $> mysqlbinlog filename
                                      # filename为二进制日志文件名。

                                      删除二进制日志

                                        MYSQL> RESET MASTER; #删除所有二进制日志
                                        MYSQL> PURGE {MASTER | BINARY} LOGS TO 'log_name'; #删除文件编号小于log_name编号的文件
                                        MYSQL> PURGE {MASTER | BINARY} LOGS BEFORE 'date'; #删除指定日期以前的文件

                                        暂时停止二进制日志(不需要重启mysql服务)

                                          MYSQL> SET sql_log_bin = {0|1}  #暂停或启动二进制日志。


                                          2020若泽数据高级班9期,Spark+Flink全栈训练营,开课啦

                                          1.官网介绍 

                                          http://www.ruozedata.com/advanced.html 

                                          底部[阅读原文],单击直接跳转,先看看,先初步了解课程内容

                                          2.课程时间:

                                          • 开课时间: 2020-07-01

                                          • 课程周期: 4.5个月(节假日除外)

                                          • 上课时间: 周三21-23点、周六周日22-20点,一周至少三次课程;

                                            根据学员情况,周末额外补课

                                          • 一年只开2期: 半年周期为一期,2020下半年就这一期

                                          3.讲师团队:

                                          • 以若泽PK+J哥为主若泽数据团队,企业在职

                                          • 若泽PK,北京西二旗某司大数据架构师

                                          • J哥,上海某金融机构大数据负责人

                                          赶快咨询哟

                                          单击[阅读原文],高级班课表


                                          文章转载自若泽大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                          评论