本文目錄一覽:
- 1、如何遷移MySQL資料庫
- 2、mysql有沒有好的據庫之間數據轉移的方法或思路呢?
- 3、怎樣用命令行把MySQL資料庫遷移到另一台Linux伺服器
- 4、如何複製MySQL資料庫或表到另外一台伺服器
- 5、mysql5.1的資料庫如何遷移至mysql5.7?
- 6、Mysql數據遷移
如何遷移MySQL資料庫
caching_sha2_password認證插件提供更多的密碼加密方式,並且在加密方面具有更好的表現,目前MySQL 8.0選用caching_sha2_password作為默認的認證插件,MySQL 5.7的認證插件是MySQL_native_password。如果客戶端版本過低,會造成無法識別MySQL 8.0的加密認證方式,最終導致連接問題。
MySQL存儲引擎現在負責提供自己的分區處理程序,而MySQL伺服器不再提供通用分區支持,InnoDB和NDB是唯一提供MySQL 8.0支持的本地分區處理程序的存儲引擎。 如果分區表用的是別的存儲引擎,存儲引擎必須進行修改。要麼將其轉換為InnoDB或NDB,要麼刪除其分區。通過MySQLdump從5.7獲取的備份文件,在導入到8.0環境前,需要確保創建分區表語句中指定的存儲引擎必須支持分區,否則會報錯。
MySQL 8.0的默認字符集utf8mb4,可能會導致之前數據的字符集跟新建對象的字符集不一致,為了避免新舊對象字符集不一致的情況,可以在配置文件將字符集和校驗規則設置為舊版本的字符集和校驗規則。
MySQL 8.0啟動使用的lower_case_table_names值必須跟初始化時使用的一致。使用不同的設置重新啟動伺服器會引入與標識符的排序和比較方式不一致的問題。
lower_case_table_names
要避免MySQL 8.0上的啟動失敗,MySQL配置文件中的sql_mode系統變數不能包含NO_AUTO_CREATE_USER。
從MySQL 5.7.24和MySQL 8.0.13開始,MySQLdump從存儲程序定義中刪除了NO_AUTO_CREATE_USER。必須手動修改使用早期版本的MySQLdump創建的轉儲文件,以刪除NO_AUTO_CREATE_USER。
在MySQL 8.0.11中,刪除了這些不推薦使用的兼容性SQL Mode:DB2,MAXDB,MSSQL,MySQL323,MySQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。從5.7到8.0的複製場景中,如果語句使用到廢棄的SQL Mode會導致複製異常。
在執行到MySQL 8.0.3或更高版本的in-place升級時,BACKUP_ADMIN許可權自動授予具有RELOAD許可權的用戶。
本文對MySQL 5.7到MySQL 8.0的升級過程中出現部分易出現問題進行整理:升級對MySQL版本的要求、升級都做了哪些內容、資料庫升級做了哪些步驟以及注意事項,希望對大家版本升級有幫助。
mysql有沒有好的據庫之間數據轉移的方法或思路呢?
gh-ost 是 GitHub 發布的一款用於 MySQL 的無觸發器在線模式遷移解決方案。它是可測試的,並提供暫停,動態控制/重新配置,審計和許多操作特權。它在整個遷移過程中,對主伺服器產生的工作量很少,與已遷移表上的現有工作分離。
gh-ost與所有現有的在線模式更改工具都以類似的方式操作:它們以與原始表相似的方式創建幽靈表,將數據從原始表緩慢且增量地複製到幽靈表,同時應用正在進行的更改(INSERT,DELETE,UPDATE)到幽靈表。最後,在適當的時候,它用幽靈表替換了原始表。gh-ost使用相同的模式。但是,它與所有現有工具的不同之處在於不使用觸發器。取而代之的是,gh-ost使用二進位日誌流捕獲表的更改,然後將其非同步應用到幽靈表。
gh-ost 承擔一些其他工具留給資料庫執行的任務。gh-ost 可以更好地控制遷移過程;可以真正暫停它;可以真正將遷移的寫入負載與主伺服器的工作負載分離。此外,它還提供了許多可操作的特權,使其更安全、可信賴且易於使用。
怎樣用命令行把MySQL資料庫遷移到另一台Linux伺服器
1、用dump命令備份資料庫。
# mysqldump -u root -p dbfile dbfile.sql
2、用rsync從新伺服器獲得備份的文件(SCP或WGET也可以)。
# rsync -avr root@myolddbserver:/home/mydumpfolder/dbfile.sql
3、登陸新伺服器的mysql客戶端。
# mysql -u root -p
4. 建立資料庫。
mysql create database dbfile;
5. 選擇新資料庫;
mysql use dbfile;
6. 載入數據;
mysql source dbfile.sql
或者
在Mysql程序中有我自己的一個資料庫共5張表,裡邊數據不算太多。我現在想把他們全部弄到另一台電腦中去,該怎麼弄,如果不用其它的軟體工具,只用Mysql自已的程序不知可否?
註:不用考慮操作系統。
—————————————————————
在dos命令提示符下使用mysqldump命令進行備份.
如下:
C:\Documents and Settings\Administratormysqldump yinshi c:\\backup.txt -uroot
-p12142022
說明:yinshi是我的資料庫名,裡面有5張表; c:\\backup.txt 是我備份出來文件名和路徑;
-u,-p參數後面跟的分別是用戶名和密碼.
將你備份出來的文件我這裡是backup.txt拷貝到另一台機上,再在dos命令提示符下用mysql命令,進行恢復,如下:
C:\Documents and Settings\Administratormysql c:\\backup.txt -uroot -p12142022
or
mysqlsource backup.txt;(這裡backup.txt在放在data目錄下)
—————————————————————
如果另一台機器上也安裝了mysql,可以直接導入
C:\mysql\binmysqldump -h172.20.6.250 -udeveloper -p123456 –opt server_databasename | mysql -hlocalhost -uroot -C obj_databasename
172.20.6.250源伺服器ip
developer源伺服器連接用戶名
—————————————————————
有兩種辦法。
1、在B機器上裝mysql。
將A機器上的mysql/data下的你的資料庫目錄整個拷貝下來。
將B機器上的mysql服務停止。
找到B機器上的mysql/data目錄,將你拷貝的目錄粘貼進去,然後啟動mysql服務就可以了。
2、使用SQL語句備份和恢復
你可以使用SELECT INTO OUTFILE語句備份數據,並用LOAD DATA INFILE語句恢複數據。這種方法只能導出數據的內容,不包括表的結構,如果表的結構文件損壞,你必須要先恢復原來的表的結構。
語法:
SELECT * INTO {OUTFILE | DUMPFILE} 』file_name』 FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 』file_name.txt』 [REPLACE | IGNORE]
INTO TABLE tbl_name
SELECT … INTO OUTFILE 』file_name』
如何複製MySQL資料庫或表到另外一台伺服器
使用這種方法前,我們需要先下載一個MySQL客戶端工具SqlYog。點擊這裡下載並安裝
下面我們開始複製資料庫:
1、打開SqlYog community Edition,分別在不同的選項卡中打開源資料庫伺服器與目標資料庫伺服器,這一點很重。
在源資料庫伺服器選項卡中你將看到所有資料庫列表。
2、在需要複製遷移的資料庫上右擊,在彈出菜單中選擇「Copy Database to Different Host/Database」
3、在彈出對話框中,我們能看到源資料庫伺服器及目標伺服器,在左邊,通過勾選複選框來選擇需要複製遷移的對象,如表、函數、觸發器等,也可以選擇所有對象。
4、在右邊選擇需要遷移的目標伺服器或資料庫
5、根據你的需要選擇複製類型:「Structure and Data」或「Structure only」,即「結構和數據」或「僅結構」。
6、選擇結束後點擊「Copy」按鈕開始複製,知道數據遷移結束。
mysql5.1的資料庫如何遷移至mysql5.7?
安全的辦法是在舊環境導出表數、在新環境建立資料庫後導入表,可以使用SQL或者TXT為中間文件。
Mysql數據遷移
caching_sha2_password認證插件提供更多的密碼加密方式,並且在加密方面具有更好的表現,目前MySQL 8.0選用caching_sha2_password作為默認的認證插件,MySQL 5.7的認證插件是MySQL_native_password。如果客戶端版本過低,會造成無法識別MySQL 8.0的加密認證方式,最終導致連接問題。
MySQL存儲引擎現在負責提供自己的分區處理程序,而MySQL伺服器不再提供通用分區支持,InnoDB和NDB是唯一提供MySQL 8.0支持的本地分區處理程序的存儲引擎。 如果分區表用的是別的存儲引擎,存儲引擎必須進行修改。要麼將其轉換為InnoDB或NDB,要麼刪除其分區。通過MySQLdump從5.7獲取的備份文件,在導入到8.0環境前,需要確保創建分區表語句中指定的存儲引擎必須支持分區,否則會報錯。
MySQL 8.0的默認字符集utf8mb4,可能會導致之前數據的字符集跟新建對象的字符集不一致,為了避免新舊對象字符集不一致的情況,可以在配置文件將字符集和校驗規則設置為舊版本的字符集和校驗規則。
MySQL 8.0啟動使用的lower_case_table_names值必須跟初始化時使用的一致。使用不同的設置重新啟動伺服器會引入與標識符的排序和比較方式不一致的問題。
lower_case_table_names
要避免MySQL 8.0上的啟動失敗,MySQL配置文件中的sql_mode系統變數不能包含NO_AUTO_CREATE_USER。
從MySQL 5.7.24和MySQL 8.0.13開始,MySQLdump從存儲程序定義中刪除了NO_AUTO_CREATE_USER。必須手動修改使用早期版本的MySQLdump創建的轉儲文件,以刪除NO_AUTO_CREATE_USER。
在MySQL 8.0.11中,刪除了這些不推薦使用的兼容性SQL Mode:DB2,MAXDB,MSSQL,MySQL323,MySQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。從5.7到8.0的複製場景中,如果語句使用到廢棄的SQL Mode會導致複製異常。
在執行到MySQL 8.0.3或更高版本的in-place升級時,BACKUP_ADMIN許可權自動授予具有RELOAD許可權的用戶。
本文對MySQL 5.7到MySQL 8.0的升級過程中出現部分易出現問題進行整理:升級對MySQL版本的要求、升級都做了哪些內容、資料庫升級做了哪些步驟以及注意事項,希望對大家版本升級有幫助。
原創文章,作者:ZH95Y,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130833.html