mysql学习笔记之十六(数据库维护)

数据备份
    数据损失原因:存储介质鼓掌,用户操作错误(误删除整个数据库),服务器彻底瘫痪
    1、文件复制
        需要先停止服务器服务,在停止之前,执行flushtables将所有数据写入到数据文件,停止之后,将数据文件拷贝到其他地方
        只适合MyISAM存储引擎,对其他引擎并不合适
    2、mysqldump
        mysqldump将包含数据的表结构和数据内容保存在相应的文本文件。具体执行时,首先检查备份数据的表结构,在相应的文本文件中生成create语句。然后检查数据内容,在相应的文本文件中生成insert into 语句。将来需要进行还原时,只需要执行文本文件中的create和insert into
        三种形式:
            备份一个数据库
                mysqldump -u username -p dname table1,table2,... >backupname.sql
                不指定table则会备份整个数据库
            备份多个数据库
                mysqldump -u username -p --databases dbname1,dbname2,...>backupname.sql

            备份所有数据库
                mysqldump -u username -p --all -databases>backupname.sql
数据还原
    1、复制备份文件还原数据库
        这种方式必须保证两个mysql数据库的主版本号一致,因为只有主版本号相同时,才能保证两个mysql数据库的文件类型是相同的
       仅对MyISAM类型的表有效
        主版本号,MySQL 5.5.21和MySQL 5.5.01主版本号是相同的,第一个数字是主版本号
    2、mysqldump
        mysqldump -u username -p [dbname]<backup.sql
        指定dbname,则还原该数据库下的表,不指定,则还原备份文件中所有的数据库
导出
    通过数据库中表的导入和导出操作,可以在mysql数据库服务器与其他数据库服务器间(sql server 、Oracle)轻松移动数据
    导出:
        将数据从mysql数据表里复制到文本文件
    导入
        将数据从文本文件加载到mysql数据库表里
    1、select...into outfile
        select [filename] from table_name [where condition] into outfile ‘filename‘ [option]
        两部分:普通查询语句(查询要导出的数据)和导出位置
        option的取值:
            fileds terminated by "string"       用来设置字段的分隔符字符串对象(string),默认为制表符
            fields enclosed by "char"       用来设置括上字段值的字符符号,默认不使用任何符号
            fields optionally enclosed by ‘char‘    用来括上char,varchar和text等字段的字符符号,默认不使用任何符号
            fieles escaped by ‘char‘        设置转义字符的字符符号,默认情况下使用"\"字符
            lines starting by ‘char‘        设置每行开头的字符符号,默认不使用任何符号
            lines terminated by ‘string‘        设置每行结束的字符串符号,默认使用‘\n‘

    2、mysqldump
        mysqldump -u root -p -T file_directory dbname tablename[option]
        option的取值:
            --fileds-terminated-by=string
            --fileds-enclosed-by=char
            --fileds-optionally-enclosed-by=char
            --lines-terminated-by=string
导入
    1、load data infile
        load data[local] infile filename into table table_name[option]
        local:指定在本地计算机中查找文本文件;
        filename:用来指定文本文件的路径和名称;
        tablename:用来指定表的名称
        oprion的取值
            fileds terminated by "string"       用来设置字段的分隔符字符串对象(string),默认为制表符
            fields enclosed by "char"       用来设置括上字段值的字符符号,默认不使用任何符号
            fields optionally enclosed by ‘char‘    用来括上char,varchar和text等字段的字符符号,默认不使用任何符号
            fieles escaped by ‘char‘        设置转义字符的字符符号,默认情况下使用"\"字符
            lines starting by ‘char‘        设置每行开头的字符符号,默认不使用任何符号
            lines terminated by ‘string‘        设置每行结束的字符串符号,默认使用‘\n‘

            ignore n lines              实现忽略文件的前n行记录
            (字段列表)              实现根据字段列表中的字段和顺序来加载记录
            set column=expr             用来设置列的转换条件,即所指定的列经过相应的转换后会被加载

    2、mysqlimport
        mysqlimport -u root -p [--local] dbname file_name[oiption]
        option的取值:
            --fileds-terminated-by=string
            --fileds-enclosed-by=char
            --fileds-optionally-enclosed-by=char
            --lines-terminated-by=string
            --ignrs-lines=n
        注意:命令里没有指定导入到哪个表里。按照书上的意思,按照文件名寻找表,然后导入进去。
数据库迁移
    1、相同版本间的mysql数据库之间的迁移
        mysqldump -h hostname -u root -password=password1 --all-databases
        |mysql -h hostname2 -u root -password=password2
        备份和还原同时操作。
        对于相同版本间的mysql数据库之间的迁移,先使用mysqldump进行备份,然后使用mysql命令将备份文件还原到新的mysql数据库。
    2、不同版本间的mysql数据库之间的迁移
        低版本->高版本最是容易实现,因为高版本兼容低版本
        对于MyISAM的表
            使用文件直接复制的方式或者mysqlhotcopy
        对于InnoDB的表
            使用mysqldump备份,使用mysql命令还原
    3、不同数据库间的迁移
        mysql->sql server :通过MyODBC实现迁移
        mysql->oracle:先通过mysqldump命令导出sql文件,手动修改
                sql中的create语句
时间: 2024-10-10 03:37:20

mysql学习笔记之十六(数据库维护)的相关文章

马哥学习笔记二十六——MySQL主从复制

配置MySQL复制基本步骤: 一.master 1.启用二进制日志 log-bin = master-bin log-bin-index = master-bin.index 2.选择一个惟一server-id server-id = {0-2^32} 3.创建具有复制权限的用户 REPLICATION SLAVE REPLICATION CLIENT 二.slave 1.启用中继日志 relay-log = relay-log relay-log-index = 2.选择一个惟一的server

Android学习笔记(十六)——碎片之间进行交互(附源码)

碎片之间进行交互 点击下载源码 很多时候,一个活动中包含一个或者多个碎片,它们彼此协作,向用户展示一个一致的UI.在这种情况下,碎片之间能进行通信并交换数据十分重要. 1.使用上一篇中创建的同一个项目,在fragment.xml中添加TextView的标识id: android:id="@+id/lblFragment1" 2.在fragment2.xml中添加一个Button,用于与fragment1进行交互: <Button android:id="@+id/btn

【Unity 3D】学习笔记二十六:unity游戏脚本(六)

在3D游戏世界中,任何一个游戏对象在创建的时候都会附带Transform(变换)组件,并且该组件是无法删除的,也不应该删除.在unity中,Transform面板一共有3个属性: Position  (位置) Rotation(旋转) Scale(缩放) 这三个值都是用来调整游戏对象在游戏界面中的位置,状态等相关参数. Position  (位置) 任何一个游戏对象的三维坐标都保存在Vector3容器中,该容器记录对象在X轴,Y轴,Z轴的坐标.一旦Vector33容器中的坐标发生变化,那么Sce

《Javascript权威指南》学习笔记之十六:BOM之源---BOM基本应用

BOM的基本应用包括:管理浏览器历史.解析地址和获取浏览器信息,本文将介绍这些应用. 一.浏览历史管理 1.history对象的方法和属性 History 对象包含用户(在浏览器窗口中)访问过的 URL,是 window 对象的一部分,可通过 window.history 属性对其进行访问.没有应用于 History 对象的公开标准,不过所有浏览器都支持该对象. length属性:返回浏览器历史列表中的URl数量.是"前进"和"后退"两个按钮之下包含的地址数的总和.

angular学习笔记(二十六)-$http(4)-设置请求超时

本篇主要讲解$http(config)的config中的timeout项: $http({ timeout: number }) 数值,从发出请求开始计算,等待的毫秒数,超过这个数还没有响应,则返回错误 demo: html: <!DOCTYPE html> <html ng-app = 'HttpGet'> <head> <title>18.4 $http(2)</title> <meta charset="utf-8"

我的MYSQL学习心得(十六)

我的MYSQL学习心得(十六) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(十三) 我的MYSQL学习心得(十四) 我的MYSQL学习心得(十五) 一步一步

【Unity 3D】学习笔记四十六:输入与控制——键盘事件

在游戏中,玩家控制主角移动,按键攻击,选择行走.都需要在程序中监听玩家的输入.unity为开发者提供了input库,来支持键盘事件,鼠标事件以及触摸事件.本文主要回顾键盘事件,以后会逐文复习鼠标以及触摸事件. 键盘事件 一般的PC键盘有104个不同的按键,在程序中通过监听这些按键事件,从而进一步执行逻辑操作.如:射击游戏中,W表示前进,S表示后退,A表示左移,D表示右移. 按下事件 在脚本中,用input.GetKeyDown( )方法将按键值作为参数,监听此按键是否被按下.按下返回true,否

iOS学习笔记(十六)——数据库操作(使用FMDB)

iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文件后,工程中必须导入如下文件,并使用 libsqlite3.dylib 依赖包. FMDB同时兼容ARC和非ARC工

Android学习笔记(十六)——数据库操作(上)

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮助类, 借助这个类我们可以方便地对数据库进行创建和升级.首先,由于SQLiteOpenHelpe是一个抽象类,所以我们需要创建一个类来继承它.SQLiteOpenHelper 中有两个抽象方法,分别是onCreate()和 onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现