Backup

嘗試導出特定 mysql 數據庫時明顯不同的大小

  • October 10, 2019

在一個相當舊版本的 CentOS-Bash “共享伺服器”環境中,我執行了以下命令:

current_date="$(date +%F-%T)"
db_user_name_and_db_name="db-username_db-name"
war="$HOME/public_html" # Web Application Root

mkdir -p "${war}/mediawiki_general_backups"

我的問題是,如果我從 PHPMyAdmin GUI 快速導出相關數據庫(所有表),我會得到一個43MBs.sql的文件。 但是,如果我通過如下 CLUI 命令導出相同的數據庫,我會得到一個23MBs的文件:
.sql

mysqldump \
-u "${db_user_name_and_db_name}" \
-p "${db_user_name_and_db_name}" \
> "${war}/mediawiki_general_backups/${db_user_name_and_db_name}-${current_date}.sql"

我不知道如何解釋這種差異;你?

做快速測試;在 PhpMyadmin 中導出一個表,並在終端中使用以下命令。

mysqldump -u $UserName -p database table > /tmp/table.sql

然後,用文本編輯器打開這兩個 SQL 文件;應該立即認識到差異:

我認識到從 PHPMyAdmin 導出的許多評論和INSERT數據的方式。例如:

導出的 SQL 具有以下標頭:

-- phpMyAdmin SQL Dump
-- version 4.0.10.20
-- https://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Oct 10, 2019 at 03:48 AM
-- Server version: 5.1.73-log
-- PHP Version: 5.3.3

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

轉儲的 SQL 具有以下標頭:

-- MySQL dump 10.13  Distrib 5.1.73, for redhat-linux-gnu (x86_64)
--
-- Host: localhost    Database: testing
-- ------------------------------------------------------
-- Server version   5.1.73-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

引用自:https://unix.stackexchange.com/questions/546088