当前位置: 首页 > news >正文

天河外贸网站建设wordpress小型店商城

天河外贸网站建设,wordpress小型店商城,html5做网站,网上建设银行网站在任何数据库环境中#xff0c;总会有不确定的意外情况发生#xff0c;比如停电#xff0c;计算机系统的各种软硬件故障#xff0c;认为破坏#xff0c;管理员误操作等是不可避免的#xff0c;这些情况可能会导致 数据的丢失#xff0c; 服务器瘫痪 等严重后果。存在多个…在任何数据库环境中总会有不确定的意外情况发生比如停电计算机系统的各种软硬件故障认为破坏管理员误操作等是不可避免的这些情况可能会导致 数据的丢失 服务器瘫痪 等严重后果。存在多个服务器时会出现主从服务器之间的 数据同步问题。 为了有效防止数据丢失并将损失降到最低应 定期 对MySQL数据库服务器做备份。如果数据库中的数据丢失或者出现错误可以使用备份的数据进行恢复。主从服务器之间的数据同步问题可以通过复制功能实现。 1. 物理备份与逻辑备份 物理备份备份数据文件转储数据库物理文件到某一目录。物理备份恢复速度比较快但是占用空间比较大MySQL中可以使用xtrabackup工具来进行物理备份。 逻辑备份对数据库对象利用工具进行导出工作汇总入备份文件捏。逻辑备份恢复速度较慢但是占用空间小更灵活。MySQL中常用的逻辑备份工具为mysqldump。逻辑备份就是 备份sql语句在恢复的时候执行备份的sql语句实现数据库数据的重现。 2.  mysqldump实现逻辑备份 mysqldump时MySQL提供的一个非常有用的数据库备份工具。 2.1 备份一个数据库 mysqldump命令执行时可以将数据库被分成一个 文本文件该文件中实际上包含多个 CREATE 和 INSERT 语句使用这些语句可以重新创建表和插入数据。 ~ 查出需要备份的表结构在文本文件中生成一个CREATE语句 ~ 将表中的所有记录转化成一条INSERT语句。基本语法 mysqldump –u user –h host –p 数据库的名称 [ 表名 1 [ 表名 2...]] 备份文件名称 .sql 举例使用root用户备份atguigu数据库 mysqldump -uroot -p atguigu book book .sql 2.2 备份部分数据库  若想用mysqldump备份整个实例可以使用 --all-databases 或 -A 参数 mysqldump -uroot -pxxxxxx -- all - databases all_database .sql mysqldump -uroot -pxxxxxx -A all_database .sql 2.3 备份部分数据库 使用 -- databases 或 - B 参数了该参数后面跟数据库名称多个数据库间用空格隔开。如果指定 databases 参数备份文件中会存在创建数据库的语句如果不指定参数则不存在。语法如下 mysqldump –u user –h host –p -- databases [ 数据库的名称 1 [ 数据库的名称 2...]] 备份文件名称 .sql mysqldump -uroot -p -- databases atguigu atguigu12 two_database .sql mysqldump -uroot -p -B atguigu atguigu12 two_database .sql 2.4 备份部分表 比如在表变更前做个备份。语法如下 mysqldump –u user –h host –p 数据库的名称 [ 表名 1 [ 表名 2...]] 备份文件名称 .sql 举例备份 atguigu 数据库下的 book 表 mysqldump -uroot -p atguigu book book .sql 2.5 备份单表的部分数据 有些时候一张表的数据量很大我们只需要部分数据。这时就可以使用 -- where 选项了。 where 后面附带需要满足的条件。 举例备份 student 表中 id 小于 10 的数据 mysqldump -uroot -p atguigu student -- where id 10 student_part_id10_low_bak .sql 内容如下所示 insert 语句只有 id 小于 10 的部分 LOCK TABLES student WRITE ; /*!40000 ALTER TABLE student DISABLE KEYS */ ; INSERT INTO student VALUES ( 1 , 100002 , JugxTY , 157 , 280 ),( 2 , 100003 , QyUcCJ , 251 , 277 ), ( 3 , 100004 , lATUPp , 80 , 404 ),( 4 , 100005 , BmFsXI , 240 , 171 ),( 5 , 100006 , mkpSwJ , 388 , 476 ), ( 6 , 100007 , ujMgwN , 259 , 124 ),( 7 , 100008 , HBJTqX , 429 , 168 ),( 8 , 100009 , dvQSQA , 61 , 504 ), ( 9 , 100010 , HljpVJ , 234 , 185 ); 2.6 排除某些表的备份  如果我们想备份某个库但是某些表数据量很大或者与业务关联不大这个时候可以考虑排除掉这些表同样的选项 --ignore-table 可以完成这个功能。 mysqldump -uroot -p atguigu -- ignore - table atguigu .student no_stu_bak .sql 通过如下指定判定文件中没有 student 表结构 grep student no_stu_bak.sql 2.7 只备份结构或只备份数据 只备份结构的话可以使用 -- no - data 简写为 - d 选项只备份数据可以使用 -- no - create - info 简写为 -t 选项。 只备份结构 mysqldump -uroot -p atguigu -- no - data atguigu_no_data_bak .sql 只备份数据 mysqldump -uroot -p atguigu -- no - create -info atguigu_no_create_info_bak .sql 2.8 备份中包含存储过程、函数、事件 mysqldump 备份默认是不包含存储过程自定义函数及事件的。可以使用 -- routines 或 - R 选项来备份存储过程及函数使用 -- events 或 - E 参数来备份事件。 举例备份整个 atguigu 库包含存储过程及事件 使用下面的 SQL 可以查看当前库有哪些存储过程或者函数 SELECT SPECIFIC_NAME,ROUTINE_TYPE ,ROUTINE_SCHEMA FROM 下面备份 atguigu 库的数据函数以及存储过程。 mysqldump -uroot -p -R -E -- databases atguigu fun_atguigu_bak .sql 2.9 mysqldump常用选项 mysqldump其他常用选项如下 -- add - drop - database 在每个 CREATE DATABASE 语句前添加 DROP DATABASE 语句。 -- add - drop - tables 在每个 CREATE TABLE 语句前添加 DROP TABLE 语句。 -- add -locking 用 LOCK TABLES 和 UNLOCK TABLES 语句引用每个表转储。重载转储文件时插入得更快。 -- all - database , -A 转储所有数据库中的所有表。与使用 -- database 选项相同在命令行中命名所有数据库。 -- comment [ 0 | 1 ] 如果设置为 0 禁止转储文件中的其他信息例如程序版本、服务器版本和主机。 --skip comments 与 --comments 0 的结果相同。默认值为 1 即包括额外信息。 --compact 产生少量输出。该选项禁用注释并启用 --skip- add - drop - tables 、 -- no - set -names 、 --skip disable - keys 和 --skip- add -locking 选项。 --compatiblename 产生与其他数据库系统或旧的 MySQL 服务器更兼容的输出值可以为 ansi 、 MySQL323 、 MySQL40 、 postgresql 、 oracle 、 mssql 、 db2 、 maxdb 、 no_key_options 、 no_table_options 或者 no_field_options 。 --complete_insert, -c 使用包括列名的完整的 INSERT 语句。 --debug[debug_options], - #[debug_options] 写调试日志。 -- delete -D 导入文本文件前清空表。 -- default - character - set charset 使用 charsets 默认字符集。如果没有指定就使用 utf8 。 -- delete -- master - logs 在主复制服务器上完成转储操作后删除二进制日志。该选项自动启用 - master data 。 -- extended - insert -e 使用包括几个 VALUES 列表的多行 INSERT 语法。这样使得转储文件更小重载文件时可 以加速插入。 -- flush - logs -F 开始转储前刷新 MySQL 服务器日志文件。该选项要求 RELOAD 权限。 -- force -f 在表转储过程中即使出现 SQL 错误也继续。 -- lock - all - tables -x 对所有数据库中的所有表加锁。在整体转储过程中通过全局锁定来实现。该选项自动关 闭 --single- transaction 和 -- lock - tables 。 -- lock - tables -l 开始转储前锁定所有表。用 READ LOCAL 锁定表以允许并行插入 MyISAM 表。对于事务表例 如 InnoDB 和 BDB --single- transaction 是一个更好的选项因为它根本不需要锁定表。 -- no - create -db -n 该选项禁用 CREATE DATABASE /*!32312 IF NOT EXIST*/ db_name 语句如果给出 - - database 或 -- all - database 选项就包含到输出中。 -- no - create -info -t 只导出数据而不添加 CREATE TABLE 语句。 -- no - data -d 不写表的任何行信息只转储表的结构。 --opt 该选项是速记它可以快速进行转储操作并产生一个能很快装入 MySQL 服务器的转储文件。该选项默认开启 但可以用 --skip-opt 禁用。 -- password [ password ] -p[ password ] 当连接服务器时使用的密码。 -portport_num -P port_num 用于连接的 TCP/IP 端口号。 --protocol{TCP|SOCKET|PIPE|MEMORY} 使用的连接协议。 -- replace -r –replace 和 -- ignore 控制替换或复制唯一键值已有记录的输入记录的处理。如果指定 -- replace 新行替换有相同的唯一键值的已有行如果指定 -- ignore 复制已有的唯一键值的输入行被跳过。如果不 指定这两个选项当发现一个复制键值时会出现一个错误并且忽视文本文件的剩余部分。 --silent -s 沉默模式。只有出现错误时才输出。 --socketpath -S path 当连接 localhost 时使用的套接字文件为默认主机。 -- user user_name -u user_name 当连接服务器时 MySQL 使用的用户名。 --verbose -v 冗长模式打印出程序操作的详细信息。 --xml -X 产生 XML 输出。 3. MySQL命令恢复数据 3.1 单库备份中恢复单库 使用 root 用户将之前练习中备份的 atguigu.sql 文件中的备份导入数据库中命令如下 如果备份文件中包含了创建数据库的语句则恢复的时候不需要指定数据库名称如下所示 mysql -uroot -p atguigu .sql   否则需要指定数据库名称如下所示 mysql -uroot -p atguigu4 atguigu .sql 3.2 全量备份恢复 如果我们现在有昨天的全量备份现在想整个恢复则可以这样操作 mysql –u root –p all.sql mysql -uroot -pxxxxxx all.sql 执行完后 MySQL 数据库中就已经恢复了 all.sql 文件中的所有数据库。 3.3 从全量备份中恢复单库 可能有这样的需求比如说我们只想恢复某一个库但是我们有的是整个实例的备份这个时候我们可以从全量备份中分离出单个库的备份。 举例 sed -n /^-- Current Database: atguigu/,/^-- Current Database: /p all_database .sql atguigu .sql # 分离完成后我们再导入 atguigu.sql 即可恢复单个库 3.4 从单库备份中恢复单表 这个需求还是比较常见的。比如说我们知道哪个表误操作了那么就可以用单表恢复的方式来恢复。 举例我们有 atguigu 整库的备份但是由于 class 表误操作需要单独恢复出这张表。 cat atguigu .sql | sed -e /./{H;$!d;} -e x;/CREATE TABLE class/!d;q class_structure .sql cat atguigu .sql | grep -- ignore - case insert into class class_data .sql # 用 shell 语法分离出创建表的语句及插入数据的语句后 再依次导出即可完成恢复 use atguigu; mysql source class_structure .sql ; Query OK, 0 rows affected, 1 warning ( 0.00 sec) mysql source class_data .sql ; Query OK, 1 row affected ( 0.01 sec) 4. 物理备份直接复制整个数据库 直接将 MySQL 中的数据库文件复制出来。这种方法最简单速度也最快。 MySQL的数据库目录位置不一定相同 在 Windows 平台下 MySQL 8.0 存放数据库的目录通常默认为 “ C:\ProgramData\MySQL\MySQL Server 8.0\Data ” 或者其他用户自定义目录 在 Linux 平台下数据库目录位置通常为 /var/lib/mysql/ 在 MAC OSX 平台下数据库目录位置通常为 “/usr/local/mysql/data” 但为了保证备份的一致性。需要保证 方式 1 备份前将服务器停止。 方式 2 备份前对相关表执行 FLUSH TABLES WITH READ LOCK 操作。这样当复制数据库目录中的文件时允许其他客户继续查询表。同时 FLUSH TABLES语句来确保开始备份前将所有激活的索引页写入硬盘。 这种方式方便、快速但不是最好的备份方法因为实际情况可能 不允许停止 MySQL 服务器 或者 锁住表 而且这种方法 对 InnoDB 存储引擎 的表不适用。对于 MyISAM存储引擎的表这样备份和还原很方便但是还原时最好是相同版本的 MySQL 数据库否则可能会存在文件类型不同的情况。 注意物理备份完毕后执行 UNLOCK TABLES 来结算其他客户对表的修改行为。 说明 在 MySQL 版本号中第一个数字表示主版本号主版本号相同的 MySQL 数据库文件格式相 同。 此外还可以考虑使用相关工具实现备份。比如 MySQLhotcopy 工具。 MySQLhotcopy 是一个 Perl脚本它使用 LOCK TABLES 、 FLUSH TABLES 和 cp 或 scp 来快速备份数据库。它是备份数据库或单个表最快的 途径但它只能运行在数据库目录所在的机器上并且只能备份 MyISAM 类型的表。多用于 mysql5.5之前。 5. 物理恢复直接复制到数据库目录 步骤 1 演示删除备份的数据库中指定表的数据 2 将备份的数据库数据拷贝到数据目录下并重启 MySQL 服务器 cat atguigu .sql | sed -e /./{H;$!d;} -e x;/CREATE TABLE class/!d;q class_structure .sql cat atguigu .sql | grep -- ignore - case insert into class class_data .sql # 用 shell 语法分离出创建表的语句及插入数据的语句后 再依次导出即可完成恢复 use atguigu; mysql source class_structure .sql ; Query OK, 0 rows affected, 1 warning ( 0.00 sec) mysql source class_data .sql ; Query OK, 1 row affected ( 0.01 sec) 3 查询相关表的数据是否恢复。需要使用下面的 chown 操作。 要求 必须确保备份数据的数据库和待恢复的数据库服务器的主版本号相同。 因为只有 MySQL 数据库主版本号相同时才能保证这两个 MySQL 数据库文件类型是相同的。 这种方式对 MyISAM 类型的表比较有效 对于 InnoDB 类型的表则不可用。 因为 InnoDB 表的表空间不能直接复制。 在 Linux 操作系统下复制到数据库目录后一定要将数据库的用户和组变成 mysql 命令如下 chown -R mysql .mysql /var/lib/mysql/dbname 其中两个 mysql 分别表示组和用户 “-R” 参数可以改变文件夹下的所有子文件的用户和组 “dbname”参数表示数据库目录。 提示 Linux 操作系统下的权限设置非常严格。通常情况下 MySQL 数据库只有 root 用户和 mysql用户组下的 mysql 用户才可以访问因此将数据库目录复制到指定文件夹后一定要使用 chown 命令将 文件夹的用户组变为 mysql 将用户变为 mysql 。 6. 表的导出与导入 1. 使用SELECT…INTO OUTFILE导出文本文件 在 MySQL 中可以使用 SELECT…INTO OUTFILE 语句将表的内容导出成一个文本文件。 举例 使用 SELECT…INTO OUTFILE 将 atguigu 数据库中 account 表中的记录导出到文本文件。 1选择数据库atguigu 并查询 account 表执行结果如下所示。   2 mysql 默认对导出的目录有权限限制也就是说使用命令行进行导出的时候需要指定目录进行操作。 查询 secure_file_priv 值 3上面结果中显示 secure_file_priv 变量的值为 /var/lib/mysql-files/ 导出目录设置为该目录 SQL 语句如下。  SELECT * FROM account INTO OUTFILE /var/lib/mysql-files/account.txt;   4查看 /var/lib/mysql-files/account.txt 文件 2. 使用mysqldump命令导出文本文件 举例 1 使用 mysqldump 命令将将 atguigu 数据库中 account 表中的记录导出到文本文件 mysqldump -uroot -p -T /var/lib/mysql-files/ atguigu account mysqldump 命令执行完毕后在指定的目录 /var/lib/mysql-files/ 下生成了 account.sql 和 account.txt 文件。 打开account.sql 文件其内容包含创建 account 表的 CREATE 语句。   打开account.txt文件其内容只包含account表中的数据  举例 2 使用 mysqldump 将 atguigu 数据库中的 account 表导出到文本文件使用 FIELDS 选项要求字段之间使用逗号“ ” 间隔所有字符类型字段值用双引号括起来 mysqldump -uroot -p -T /var/lib/mysql-files/ atguigu account -- fields - terminated - by , -- fields - optionally - enclosed - by \   语句 mysqldump 语句执行成功之后指定目录下会出现两个文件 account.sql 和 account.txt 。 打开 account.sql 文件其内容包含创建 account 表的 CREATE 语句。     打开 account.txt 文件其内容包含创建 account 表的数据。从文件中可以看出字段之间用逗号隔开字符类型的值被双引号括起来。 3. 使用mysql命令导出文本文件 举例 1 使用 mysql 语句导出 atguigu 数据中 account 表中的记录到文本文件 mysql -uroot -p -- execute SELECT * FROM account; atguigu  /var/lib/mysql/files/account.txt 打开 account.txt 文件其内容包含创建 account 表的数据。   举例 2 将 atguigu 数据库 account 表中的记录导出到文本文件使用 --veritcal 参数将该条件记录分为多行显示 mysql -uroot -p --vertical -- execute SELECT * FROM account; atguigu /var/lib/mysql-files/account_1.txt 6.2 表的导入 1. 使用 LOAD DATA INFILE 方式导入文本文件 举例 1 使用 SELECT...INTO OUTFILE 将 atguigu 数据库中 account 表的记录导出到文本文件 SELECT * FROM atguigu .account INTO OUTFILE /var/lib/mysql-files/account_0.txt ; 删除 account 表中的数据 DELETE FROM atguigu .account ; 从文本文件 account.txt 中恢复数据 LOAD DATA INFILE /var/lib/mysql-files/account_0.txt INTO TABLE atguigu .account ; 查询 account 表中的数据 2. 使用mysqlimport方式导入文本文件 举例 导出文件 account.txt 字段之间使用逗号 间隔字段值用双引号括起来 SELECT * FROM atguigu .account INTO OUTFILE /var/lib/mysql-files/account.txt FIELDS TERMINATED BY , ENCLOSED BY \ ; 删除 account 表中的数据 DELETE FROM atguigu.account; 使用mysqlimport命令将account.txt文件内容导入到数据库atguigu的account表中 mysqlimport -uroot -p atguigu /var/lib/mysql-files/account.txt -- fields - terminated - by , -- fields - optionally - enclosed - by \ 查询 account 表中的数据   7. 数据库迁移 7.1 概述 数据迁移data migration 是指选择、准备、提取和转换数据并 将数据从一个计算机存储系统永久地 传输到另一个计算机存储系统的过程 。此外 验证迁移数据的完整性 和 退役原来旧的数据存储 也被认为是整个数据迁移过程的一部分。 数据库迁移的原因是多样的包括服务器或存储设备更换、维护或升级应用程序迁移网站集成灾难恢复和数据中心迁移。 根据不同的需求可能要采取不同的迁移方案但总体来讲 MySQL 数据迁移方案大致可以分为 物理迁移 和 逻辑迁移 两类。通常以尽可能 自动化 的方式执行从而将人力资源从繁琐的任务中解放出来。 7.2 迁移方案 物理迁移 物理迁移适用于大数据量下的整体迁移。使用物理迁移方案的优点是比较快速但需要停机迁移并且要求 MySQL 版本及配置必须和原服务器相同也可能引起未知问题。 物理迁移包括拷贝数据文件和使用 XtraBackup 备份工具两种。 不同服务器之间可以采用物理迁移我们可以在新的服务器上安装好同版本的数据库软件创建好相同目录建议配置文件也要和原数据库相同然后从原数据库方拷贝来数据文件及日志文件配置好文件组权限之后在新服务器这边使用 mysqld 命令启动数据库。 逻辑迁移 逻辑迁移适用范围更广无论是 部分迁移 还是 全量迁移 都可以使用逻辑迁移。逻辑迁移中使用最多的就是通过 mysqldump 等备份工具。 7.3 迁移注意点 1. 相同版本的数据库之间迁移注意点 指的是在主版本号相同的 MySQL 数据库之间进行数据库移动。 方式 1 因为迁移前后 MySQL 数据库的 主版本号相同 所以可以通过复制数据库目录来实现数据库迁移但是物理迁移方式只适用于 MyISAM 引擎的表。对于 InnoDB表不能用直接复制文件的方式备份数据库。 select * from account; mysql select * from account; --------------------- | id | name | balance | --------------------- | 1 | 张三 | 90 | | 2 | 李四 | 100 | | 3 | 王五 | 0 | --------------------- 3 rows in set ( 0.00 sec) 方式 2 最常见和最安全的方式是使用 mysqldump 命令 导出数据然后在目标数据库服务器中使用MySQL 命令导入。 举例 #host1的机器中备份所有数据库,并将数据库迁移到名为host2的机器上 mysqldump –h host1 –uroot –p –-all-databases| mysql –h host2 –uroot –p 在上述语句中 “|” 符号表示管道其作用是将 mysqldump 备份的文件给 mysql 命令 “--all-databases” 表 示要迁移所有的数据库。通过这种方式可以直接实现迁移。 2. 不同版本的数据库之间迁移注意点 例如原来很多服务器使用 5.7 版本的 MySQL 数据库在 8.0 版本推出来以后改进了 5.7 版本的很多缺陷 因此需要把数据库升级到 8.0 版本 旧版本与新版本的 MySQL 可能使用不同的默认字符集例如有的旧版本中使用 latin1 作为默认字符集而 最新版本的 MySQL 默认字符集为 utf8mb4 。如果数据库中有中文数据那么迁移过程中需要对 默认字符集 进行修改 不然可能无法正常显示数据。 高版本的 MySQL 数据库通常都会 兼容低版本 因此可以从低版本的 MySQL 数据库迁移到高版本的 MySQL 数据库。 3. 不同数据库之间迁移注意点 不同数据库之间迁移是指从其他类型的数据库迁移到 MySQL 数据库或者从 MySQL数据库迁移到其他类型的数据库。这种迁移没有普适的解决方法。 迁移之前需要了解不同数据库的架构 比较它们之间的差异 。不同数据库中定义相同类型的数据的 关键字可能会不同 。例如 MySQL 中日期字段分为 DATE 和 TIME 两种而 ORACLE 日期字段只有 DATE SQLServer 数据库中有 ntext 、 Image 等数据类型 MySQL 数据库没有这些数据类型 MySQL 支持的 ENUM 和 SET 类型这些 SQL Server 数据库不支持。 另外数据库厂商并没有完全按照 SQL 标准来设计数据库系统导致不同的数据库系统的 SQL 语句 有差别。例如微软的 SQL Server 软件使用的是 T-SQL 语句 T-SQL 中包含了非标准的 SQL 语句不能和MySQL的 SQL 语句兼容。 不同类型数据库之间的差异造成了互相 迁移的困难 这些差异其实是商业公司故意造成的技术壁垒。但是不同类型的数据库之间的迁移并 不是完全不可能 。例如可以使用 MyODBC 实现 MySQL 和 SQL Server之间的迁移。 MySQL 官方提供的工具 MySQL Migration Toolkit 也可以在不同数据之间进行数据迁移。 MySQL 迁移到 Oracle 时需要使用 mysqldump 命令导出 sql 文件然后 手动更改 sql 文件中的 CREATE语句。 7.4 迁移小结 8. 删库了不敢跑能干点啥 8.1 delete误删行 经验之谈 1. 恢复数据比较安全的做法是 恢复出一个备份 或者找一个从库作为 临时库 在这个临时库上执行这些操作然后再将确认过的临时库的数据恢复回主库。如果直接修改主库可能导致对数 据的 二次破坏 。 2. 当然针对预防误删数据的问题建议如下 1. 把 sql_safe_updates 参数设置为 on 。这样一来如果我们忘记在 delete 或者 update 语句 中写 where 条件或者 where 条件里面没有包含索引字段的话这条语句的执行就会报错。 如果确定要把一个小表的数据全部删掉在设置了 sql_safe_updateson 情况下可以 在 delete 语句中加上 where 条件比如 where id0 。 2. 代码上线前必须经过 SQL 审计 。 8.2 truncate/drop 误删库/表 方案 这种情况下要想恢复数据就需要使用 全量备份 加 增量日志 的方式了。这个方案要求线上有定期的全量备份并且实时备份 binlog 。 在这两个条件都具备的情况下假如有人中午 12 点误删了一个库恢复数据的流程如下 1. 取最近一次 全量备份 假设这个库是一天一备上次备份是当天 凌晨 2 点 2. 用备份恢复出一个 临时库 3. 从日志备份里面取出凌晨 2 点之后的日志 4. 把这些日志除了误删除数据的语句外全部应用到临时库。 8.3 延迟复制备库 如果有 非常核心 的业务不允许太长的恢复时间可以考虑 搭建延迟复制的备库。 一般的主备复制结构存在的问题是如果主库上有个表被误删了这个命令很快也会被发给所有从库进而导致所有从库的数据表也都一起被误删了。 延迟复制的备库是一种特殊的备库通过 CHANGE MASTER TO MASTER_DELAY N 命令可以指定这个备库持续保持跟主库有 N 秒的延迟 。比如你把 N 设置为 3600 这就代表了如果主库上有数据被误删了 并且在 1小时内发现了这个误操作命令这个命令就还没有在这个延迟复制的备库执行。这时候到这个备库上执行 stop slave 再通过之前介绍的方法跳过误操作命令就可以恢复出需要的数据。 8.4 预防误删库/表的方法 1. 账号分离 。这样做的目的是避免写错命令。比如 只给业务开发同学 DML 权限而不给 truncate/drop 权限。而如果业务开发人员有 DDL 需求的话可 以通过开发管理系统得到支持。 即使是 DBA 团队成员日常也都规定只使用 只读账号 必要的时候才使用有更新权限的账号。 2. 制定操作规范 。比如 在删除数据表之前必须先 对表做改名 操作。然后观察一段时间确保对业务无影响以后再删除这张表。 改表名的时候要求给表名加固定的后缀比如加 _to_be_deleted ) 然后删除表的动作必须通 过管理系统执行。并且管理系统删除表的时候只能删除固定后缀的表 8.5 rm误删MySQL实例 对于一个有高可用机制的 MySQL 集群来说不用担心 rm 删除数据 了。只是删掉了其中某一个节点的数据的话 HA系统就会开始工作选出一个新的主库从而保证整个集群的正常工作。我们要做的就是在这个节点上把数据恢复回来再接入整个集群。
http://www.pierceye.com/news/314629/

相关文章:

  • 郑州网站建设搜q.479185700怎么在百度上推广自己的公司信息
  • 深圳住建设局官方网站大连在哪个省市
  • 吉林企业建站系统费用wordpress幻灯片加载很慢
  • com域名和网站小型企业网站排名前十
  • 网站内容 优化泉州网站开发公司
  • 假发外贸网站模板做图库网站需要多少钱
  • 网站建设公司 知道万维科技wordpress支持移动
  • 经典网站建设邢台网站建设策划
  • 系统数据库与建设网站网站提交入口大全
  • 网站做数据分析的意义西安网站建设kxccc
  • 免费建个人网站alexa排名搜索
  • 做的网站第二年续费多钱店铺装修模板
  • 这么自己建设网站中卫网站设计厂家
  • 公司网站制作哪家公司好广州建设执业资格注册中心网站
  • 北京所有做招聘类网站建站公司Apache Wordpress伪静态处理
  • 大兴做网站公司制作网页可以用什么软件
  • 该怎么给做网站的提页面需求网上购物平台怎么建立
  • 用pw后缀的网站阳江网络问政平台首页
  • 建站网站建设哪个好网页设计个人总结
  • 网站开发时间进度表宁波网站建设使用技巧分享
  • wordpress官网案例移动端优化
  • 广告投放网宁波seo网络推广报价
  • 网站模板 哪个好烟台高端网站建设公司
  • 福建网站开发手机软件app下载
  • 网站开发的功能需求怎么写网页版式设计分析
  • 荔浦网站开发乐陵新闻最新消息今天
  • 盘锦网站建设服务如何上传网站到空间
  • 怎样建设自己网站常德seo招聘
  • 用别人家网站做跳转做商品抬价是什么兼职网站
  • 合肥市建设信息中心网站怎么做网站的签约编辑