mysql數據備份和恢復

本文經過mysqldump命令方式先備份,再進行恢復。mysql

網上不少的關於數據庫遷移的話題,都是經過拷貝數據庫/var/lib/mysql目錄下的ibdata1ib_logfile0ib_logfile1等等操做,我都一一試過,所有失敗了。。sql

數據備份:

$ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql
複製代碼

若是要同時備備份數據表和存儲過程等,經過以下參數:shell

mysqldump  -E -R --triggers --opt  --single-transaction --master-data=2  --default-character-set=utf8 -uroot -p123456 zmgj > /tmp/zmgj.sql
複製代碼

若是備份以下報錯:數據庫

$ mysqldump: Error: Binlogging on server not active
複製代碼
  1. 錯誤緣由vim

    binlog日誌會記錄下數據庫的因此增刪改操做,當不當心刪除、清空數據,或數據庫系統出錯,這時候就可使用binlog日誌來還原數據庫,簡單來講就是一個記錄備份的東西。mysqldump須要這個功能開啓。bash

  2. 解決辦法工具

    編輯my.cnfspa

    $ sudo vim /etc/my.cnf
    複製代碼

    在[mysqld]下添加:rest

    log-bin=mysql-bin
    #server-id=1 #視狀況添加,有時候添加這個致使數據庫啓動失敗
    複製代碼

    重啓mysql,執行下面的其中一條便可:日誌

    service mysqld restart
    service mysql restart
    systemctl restart mysql.service
    複製代碼

數據恢復:

$ mysql -u root -p < backupdatabase.sql
複製代碼

也可使用如SQLyog工具,鏈接數據庫後,右擊執行sql腳本

若是恢復以下報錯:

ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.
複製代碼
  1. 錯誤緣由 因爲 MySQL Innodb 引擎表索引字段長度的限制爲 767 字節,所以對於多字節字符集的大字段(或者多字段組合索引),建立索引會出現上面的錯誤。 以 utf8mb4 字符集 字符串類型字段爲例:utf8mb4 是 4 字節字符集,則默認支持的索引字段最大長度是: 767 字節 / 4 字節每字符 = 191 字符,所以在 varchar(255) 或 char(255) 類型字段上建立索引會失敗。

  2. 解決辦法: 1.調整參數 innodb_large_prefix 爲 ON 將 Innodb_large_prefix 修改成 on 後,對於 Dynamic 和 Compressed 格式的InnoDB 引擎表,其最大的索引字段長度支持到 3072 字節。Mysql5.7默認是ON,通常能成功。

    [mysqld]
    default-storage-engine=INNODB
    innodb_file_format=barracuda
    innodb_file_per_table=true
    innodb_large_prefix=true  
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    max_allowed_packet=500M
    複製代碼
  3. 建立表的時候指定表的 row format 格式爲 Dynamic

    CREATE TABLE `ao_0ac321_recommendation_ao` (
      `CATEGORY` VARCHAR(255) DEFAULT NULL,
      `CUSTOM_FIELD_ID` BIGINT(20) DEFAULT NULL,
      `ID` VARCHAR(255) NOT NULL,
      `NAME` VARCHAR(255) DEFAULT NULL,
      `PERFORMANCE_IMPACT` DOUBLE DEFAULT NULL,
      `PROJECT_IDS` LONGTEXT,
      `RESOLVED` TINYINT(1) DEFAULT NULL,
      `TYPE` VARCHAR(255) DEFAULT NULL,
      PRIMARY KEY (`ID`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
    複製代碼
相關文章
相關標籤/搜索