如果是相同的基礎版本(如 5.5),可以直接卸載 MySQL 然後安裝 MariaDB,這樣就可以用了。甚至不需要備份然後還原資料庫。當然,保險起見,升級前將所有的資料庫都備份一下還是非常有必要的,以防萬一。如果 MariaDB 的主版本高,在經過上面的卸載 MySQL 再安裝 MariaDB 操作之後,需要使用 mysql_upgrade 升級一下。是的,甚至連命令行都與使用MySQL 的時候一樣。
A. 先配置 MariaDB的安裝源。
目前 MariaDB 的主版本是 10.1,將下面的安裝源配置保存為MariaDB.repo,上傳到伺服器的 /etc/yum.repos.d 文件夾:
[mariadb]
name = MariaDB
enable=1
priority=3
baseurl = http://yum.mariadb.org/10.1/centos6-x86
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
其中 priority=3 是針對 YUM 的 PRIORITIES 優先順序插件的。
B. 卸載原來的 MYSQL 及相關包。
# yum remove mysql*
上面用 * 來匹配刪除所有 mysql 數據包(包括因包依賴而刪除的別的包,如 postfix)。因為直接安裝的時候會出現沖突,例如:
file /usr/share/mysql/ukrainian/errmsg.sys from install of MariaDB-server-***** conflicts with file from package mysql-libs-5.5.32-****
嗯,好像因為將 php-mysql 也給刪除了(實際上這個不該刪除的),所以 phpMyAdmin 也因為依賴關系而被刪除了,我沒仔細看。
所以最好不要用通配符 *,而是選擇性刪除幾個主要的,
# yum remove mysql mysql-server mysql-libs
但是這個我沒有再測試,因為後面有更好的方法。
C. 然後安裝 MariaDB及相應 PHP 擴展。
也是指定幾個主要的安裝包,剩下的讓 yum 自己進行依賴關系檢查。
# yum install MariaDB-server MariaDB-client php-mysql
或者不安裝 MariaDB-server 而改為具有同步多主群集特性(synchronous multi-master cluster)的 MariaDB Galera Cluster:
# yum install MariaDB-Galera-server MariaDB-client galera
這里比較搞笑的是,沒注意前面把 php-mysql 給卸載了,結果運行資料庫之後訪問 WordPress,結果遭遇下面的錯誤:
Your PHP installation appears to be missing the MySQL extension which is required by WordPress.
D. 完成,修補MariaDB
不管版本是否升級了,執行一下資料庫升級指令總沒有壞處:
# mysql_upgrade -p
看看資料庫版本是不是升級了:
# mysql -u root -p -e 『show global variables like 「version」;』
Enter password:
+—————+—————-+
| Variable_name | Value |
+—————+—————-+
| version | 5.5.31-MariaDB |
+—————+—————-+
將 MariaDB 加入隨系統自啟動列表,
# chkconfig –levels 345 mysql on
嗯,以前 MySQL 的時候是 mysqld,現在是 mysql,就差了一個字母 d。
啟動MariaDB
# service mysql start
② mysql主從同步,一個是mysql的5.5.56-MariaDB, 另外一個是 mysql的5.6.14 ,能數據
首先, 我要著重詳述下為什麼我們沒有把MySQL 5.6 直接拿過來作為二次開發的基礎,去做一個產品,可以稱為 MariaDB 5.6. 這個原因的細節我們直接都沒有和眾人分享。
1. MySQL5.6 的代碼庫的文件結構已經被改動了。比如單個代碼文件已經被分成多個,又或者是某些代碼已經被重新歸類到了不同的文件內。所以要把MariaDB 去配合現在這個文件結構一定是一個非常消耗時間的過程。而其實我確實不是很明白MySQL為什麼要改動現有的文件結構。
2. MairaDB 5.5 已經有大量的代碼不同於MySQL 5.5 的版本,而且也有很多的新的特徵被整合到MariaDB 5.5 中,而這些特徵直到 5.6 版本才出現在MySQL中。所以我們在比較同樣功能的MySQL 和MariaDB的版本,同時在完成設計和QA方面的審核後,一個很明顯的結論是MariaDB會是一個更好的產品。在大多數情況下,在選擇MariaDB的時候,人們會更多的考慮到功能方面的偏好。
3. 所以MySQL的新代碼,至少是修改bug的代碼以後都沒有必要進行相應的測試了。我們試想一下,當有這樣一個功能要加入到一段代碼中,而這個功能原本就是來源於這段代碼的情況下,測試將是一個異常重要的過程來保證這個功能的正常運行。
sjZ52
翻譯於 2年前
0人頂
頂 翻譯的不錯哦!
和上文中提到的第二點和第三點一樣,Stewart Smith在Percona寫到關於Mysql最後安全補丁的回歸測試和QA如何測試使用MariaDB工程,以及保存在Percona伺服器用作回歸測試的測試用例的重要性。參考:wrote yesterday about the latest security fix in MySQL introcing a regression
MariaDB不僅僅是Mysql的一個替代品。它的主要目的是創新和提高Mysql的技術,Mysql5.6不是一個合適的創新基礎平台,所以我們就做了下面的事情:
1.由於我們引入了一些新功能(像 multi-source replication多源復制, Cassandra integration, engine independent statistics獨立統計系統等),所以我們需要搞個新版本。通常當你引入新功能時,你需要新建個版本。
2.下個版本稱作「MariaDB5.6」是不準確的,因為他不是基於Mysql5.6,取而代之,我們決定版本號調為10.0
3.MariaDB引入Mysql5.6作為一種替代方案的話,需要提升很多功能,我們已經邁出了第一步,正朝著合並或者重建Mysql5.6的功能方向發展。
③ Navicat怎麼連接MariaDB資料庫
第一步,打開桌面上的Navicat快捷方式
第二步,進入Navicat主界面
第三步,點擊左上角的文件
第四步,下拉列表中選中新建連接
第五步,選擇MariaDB
第六步,彈出新建連接對話框
第七步,根據實際情況填寫相應信息,點擊確定
第八步,成功生成連接MariaDB資料庫
④ mariadb5.5.44主從數據不同步,調取relaylog執行sql語句,求解!
把你160機器上配置文件中的"replicate_wild_do_table=qqq.%, mysql.%"這一行注釋掉或刪掉。
如果你是想復制qqq資料庫和mysql資料庫,配置文件應該是:
replicat_do_db = qqq
replicat_do_db = mysql
⑤ MariaDB與MySQL兩個資料庫怎麼樣同時安裝使用
一, CentOS7環境下
1. 安裝Mysql5.6.19,安裝成功後,埠號:3306
[root@centOS7]# mysql -uroot -h127.0.0.1 -P3306 -p
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.19 |
+-----------+
1 row in set (0.00 sec)
2.安裝MariaDB10.0.12.,安裝成功後,口埠號:3307
[root@centOS7]# mysql -uroot -h127.0.0.1 -P3307 -p
mysql> select version();
+---------------------+
| version() |
+---------------------+
| 10.0.12-MariaDB-log |
+---------------------+
1 row in set (0.00 sec)
下面是,在Mysql安裝好後,安裝MariaDB10.0.12的詳細方法
下載最新版本的二進制編譯包tar.gz (目前為mariadb-10.0.12-linux-x86_64),並將它解壓到你的自定義目錄中. 本文檔假定安裝目錄為/opt.
創建數據所在目錄及符號鏈接,如下所示:
[root@centOS7 opt]# mkdir mariadb-data
[root@centOS7 opt]# ln -s mariadb-10.0.12-linux-x86_64 mariadb
[root@centOS7 opt]# ls -al
total 20
drwxr-xr-x. 5 root root 4096 2014-09-26 07:27 .
dr-xr-xr-x. 23 root root 4096 2014-09-26 06:38 ..
lrwxrwxrwx. 1 root root 27 2014-09-26 07:27 mariadb -> mariadb-10.0.12-linux-x86_64
drwxr-xr-x. 13 root root 4096 2014-09-26 07:07 mariadb-10.0.12-linux-x86_64
drwxr-xr-x. 2 root root 4096 2014-09-26 07:26 mariadb-data
創建組mariadb及用戶mariadb, 設置文件對應的所屬許可權:
[root@centOS7 opt]# groupadd --system mariadb
[root@centOS7 opt]# useradd -c "MariaDB Server" -d /opt/mariadb -g mariadb --system mariadb
[root@centOS7 opt]# chown -R mariadb:mariadb mariadb-10.0.12-linux-x86_64/
[root@centOS7 opt]# chown -R mariadb:mariadb mariadb-data/
通過從support-files中拷貝my.cnf, 在/opt/mariadb目錄下創建新的my.cnf:
[root@centOS7 opt]# cp mariadb/support-files/my-medium.cnf mariadb-data/my.cnf
[root@centOS7 opt]# chown mariadb:mariadb mariadb-data/my.cnf
編輯文件/opt/mariadb-data/my.cnf, 增加自定義值, socket, port, user及最重要的設置: data目錄和base目錄. 最後的設置至少是這樣的:
[client]
port = 3307
socket = /opt/mariadb-data/mariadb.sock
[mysqld]
datadir = /opt/mariadb-data
basedir = /opt/mariadb
port = 3307
socket = /opt/mariadb-data/mariadb.sock
user = mariadb
從support-files文件中拷貝init.d腳本到對應的位置:
[root@centOS7 opt]# cp mariadb/support-files/mysql.server /etc/init.d/mariadb
[root@centOS7 opt]# chmod +x /etc/init.d/mariadb
編輯/etc/init.d/mariadb,使用 mariadb替換 mysql設置項, 如下所示:
- # Provides: mysql
+ # Provides: mariadb
- basedir=
+ basedir=/opt/mariadb
- datadir=
+ datadir=/opt/mariadb-data
- lock_file_path="$lockdir/mysql"
+ lock_file_path="$lockdir/mariadb"
你需要告訴mariadb讀取唯一的cnf文件. 在$bindir/mysqld_safe之後加上--defaults-file=/opt/mariadb-data/my.cnf. 最後參數設置應該是這樣的:
# Give extra arguments to mysqld with the my.cnf file. This script
# may be overwritten at next upgrade.
$bindir/mysqld_safe --defaults-file=/opt/mariadb-data/my.cnf --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
顯式指定 my.cnf作為傳入參數,來運行 mysql_install_db:
[root@centOS7 opt]# cd mariadb
[root@centOS7 mariadb]# scripts/mysql_install_db --defaults-file=/opt/mariadb-data/my.cnf
現在你可以這樣啟動MariaDB:
[root@centOS7 opt]# /etc/init.d/mariadb start
Starting MySQL SUCCESS
把MariaDB啟動設置為系統級別啟動:
[root@centOS7 opt]# cd /etc/init.d
[root@centOS7 init.d]# chkconfig --add mariadb
[root@centOS7 init.d]# chkconfig --levels 3 mariadb on
最後,測試現在有兩個資料庫服務實例在運行:
[root@centOS7 ~]# mysql -e "SELECT VERSION();"
+-----------+
| VERSION() |
+-----------+
| 5.6.19 |
+-----------+
[root@mariadb-near-mysql ~]# mysql -e "SELECT VERSION();" --socket=/opt/mariadb-data/mariadb.sock
+--------------------+
| VERSION() |
+--------------------+
|10.0.12-MariaDB-log |
+--------------------+
⑥ 如何從MySQL遷移到MariaDB
本來 MariaDB 的描繪初衷之一即是徹底兼容 MySQL,包含 API 和客戶端協議,使之能輕松變成 MySQL 的代替品,所以由 MySQL 搬遷到MariaDB 基本上能夠稱之為「晉級」,就如同軟體晉級版別一樣。MariaDB 的技能文檔上是這樣寫的:
若是是一樣的根底版別(如5.5),能夠直接卸載 MySQL 然後裝置MariaDB,這樣就能夠用了。乃至不需求備份然後復原資料庫。當然,穩妥起見,晉級前將一切的資料庫都備份一下仍是十分有必要的,以防萬一。
若是MariaDB 的主版別高,在通過上面的卸載 MySQL 再裝置 MariaDB 操作之後,需求運用 mysql_upgrade晉級一下。是的,乃至連命令行都與運用 MySQL 的時分一樣。
一切原先的客戶端和連接器(PHP、Perl、Python、Java等)都不需求做任何改動就能正常作業,由於 MariaDB 與 MySQL 運用的是一樣的客戶端協議,而且客戶端庫文件也是二進制兼容的。上面用 *來匹配刪去一切 mysql 數據包(包含因包依靠而刪去的別的包,如 postfix)。由於直接裝置的時分會呈現抵觸,例如:
file
/usr/share/mysql/ukrainian/errmsg.sys from install of
MariaDB-server-5.5.31-1.i686 conflicts with file from package
mysql-libs-5.5.32-1.el6.remi.i686
嗯,如同由於將 php-mysql 也給刪去了(實際上這個不應刪去的),所以phpMyAdmin 也由於依靠聯系而被刪去了,我沒仔細看。所以最佳不要用通配符 *,而是選擇性刪去幾個首要的,
# yum remove
mysql mysql-server mysql-libs
可是這個我沒有再測驗,由於後邊有非常好的辦法。
C. 然後裝置 MARIADB 及相應
PHP 拓展。
也是指定幾個首要的裝置包,剩餘的讓 yum 自個進行依靠聯系查看。
# yum install
MariaDB-server MariaDB-client php-mysql
或許不裝置 MariaDB-server
而改為具有同步多主群集特性(synchronous multi-master cluster)的 MariaDB Galera Cluster:
# yum install MariaDB-Galera-server MariaDB-client galera
這里對比搞笑的是,沒注意前面把
php-mysql 給卸載了,成果運轉資料庫之後拜訪 WordPress,成果遭受下面的過錯:
Your PHP installation appears
to be missing the MySQL extension which is required by WordPress.
D.
完結,修補
不論版別是不是晉級了,履行一下資料庫晉級指令總沒有害處:
# mysql_upgrade -p
看看資料庫版別是不是晉級了:
# mysql -u root -p -e 'show global variables like
"version";'
Enter password:
+---------------+----------------+
| Variable_name | Value |
+---------------+----------------+
| version | 5.5.31-MariaDB |
+---------------+----------------+
將 MariaDB 參加隨體系自發動列表,
# chkconfig --levels 345 mysql on
嗯,曾經
MySQL 的時分是 mysqld,現在是 mysql,就差了一個字母 d。
發動它,
# service mysql start
這個時分伺服器上的網站大概現已能夠正常作業了,拜訪資料庫沒有疑問。
若是有必要,裝置完 MariaDB 之後能夠重新裝置 postfix。若是發現
phpMyAdmin 提示無拜訪許可權了,那即是被卸載了,需求重新裝置和裝備 phpMyAdmin。
別的,由於之前進行了卸載操作,所以本來的 MySQL
和 phpMyAdmin 的裝備文件都被清除了,也需求重新裝備。特別是 MySQL 的裝備文件 /etc/my.cnf,由於 MariaDB
盡管創建了一個my.cnf.d 文件夾來存儲自個的裝備文件,可是它會首要載入 my.cnf,且本來 MySQL 的裝備的 [mysqld]
那一節的內容仍是有用的。
3. 較好的晉級辦法
仍是在上面介紹的體系裝備下,先增加 MariaDB 裝置源,然後直接履行體系晉級,
# yum
update --skip-broken
MariaDB 有關裝置包會被裝置,不需求的 MySQL
包將被卸載,而且晉級之後不需求對體系進行修補了。看看輸出的前面一部分:
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
MariaDB-Galera-server i686 5.5.29-1 mariadb 19 M
replacing mysql.i686 5.5.21-1.el6.remi
replacing
mysql-server.i686 5.5.21-1.el6.remi
MariaDB-server i686 5.5.31-1 mariadb
32 M
replacing mysql-server.i686 5.5.21-1.el6.remi
MariaDB-shared i686 5.5.31-1 mariadb 1.0 M
replacing
mysql-libs.i686 5.5.21-1.el6.remi
kernel i686 2.6.32-358.11.1.el6
updates 24 M
libjpeg-turbo i686 1.2.1-1.el6 base 176 k
replacing
libjpeg.i686 6b-46.el6
Updating:
⑦ 如何把mariadb遷移到mysql
背景客戶環境資料庫目前使用的是 MariaDB 10.1.9,計劃遷移到 MySQL 5.7.25,需要測試遷移是否能成功,以及遷移到 MySQL 後資料庫的性能對比。
一、准備環境
安裝 MariaDB 10.1.9
2. 安裝 mysql 5.7.25
二、遷移測試
對 MariaDB 全備
2. 導入全備到 MySQL 5.7.25
可以看到在導入全備時有個報錯,從字面看,是 mysql.proc 這張表損壞了。
接下來我們分析下,這個報錯到底是什麼
四、性能測試結果
從 sysbench 壓測的結果來看,在相同配置的伺服器以及保持重要參數一致的情況下(比如雙一打開),MariaDB 10.1.9 與 MySQL 5.7.25 讀寫性能相差不大。
五、總結
經測試,MariaDB 10.1.9 可以正常遷移到 MySQL 5.7.25,並能保證遷移後性能不下降或者略有上升。
⑧ MariaDB與MySQL兩個資料庫怎麼樣同時安裝使用
埠號登陸方法:
一, CentOS7環境下
1. 安裝Mysql5.6.19,安裝成功後,埠號:3306
[root@centOS7]# mysql -uroot -h127.0.0.1 -P3306 -p
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.19 |
+-----------+
1 row in set (0.00 sec)
2.安裝MariaDB10.0.12.,安裝成功後,口埠號:3307
[root@centOS7]# mysql -uroot -h127.0.0.1 -P3307 -p
mysql> select version();
+---------------------+
| version() |
+---------------------+
| 10.0.12-MariaDB-log |
+---------------------+
1 row in set (0.00 sec)
下面是,在Mysql安裝好後,安裝MariaDB10.0.12的詳細方法
下載最新版本的二進制編譯包tar.gz
(目前為mariadb-10.0.12-linux-x86_64),並將它解壓到你的自定義目錄中.
本文檔假定安裝目錄為/opt.
創建數據所在目錄及符號鏈接,如下所示:
[root@centOS7 opt]# mkdir mariadb-data
[root@centOS7 opt]# ln -s mariadb-10.0.12-linux-x86_64
mariadb
[root@centOS7 opt]# ls -al
total 20
drwxr-xr-x. 5 root root 4096 2014-09-26 07:27 .
dr-xr-xr-x. 23 root root 4096 2014-09-26 06:38 ..
lrwxrwxrwx. 1 root root 27 2014-09-26 07:27 mariadb
-> mariadb-10.0.12-linux-x86_64
drwxr-xr-x. 13 root root 4096 2014-09-26 07:07
mariadb-10.0.12-linux-x86_64
drwxr-xr-x. 2 root root 4096 2014-09-26 07:26
mariadb-data
創建組mariadb及用戶mariadb, 設置文件對應的所屬許可權:
[root@centOS7 opt]# groupadd --system mariadb
[root@centOS7 opt]# useradd -c "MariaDB Server" -d /opt/mariadb -g
mariadb --system mariadb
[root@centOS7 opt]# chown -R mariadb:mariadb
mariadb-10.0.12-linux-x86_64/
[root@centOS7 opt]# chown -R mariadb:mariadb
mariadb-data/
通過從support-files中拷貝my.cnf, 在/opt/mariadb目錄下創建新的my.cnf:
[root@centOS7 opt]# cp mariadb/support-files/my-medium.cnf
mariadb-data/my.cnf
[root@centOS7 opt]# chown mariadb:mariadb
mariadb-data/my.cnf
編輯文件/opt/mariadb-data/my.cnf, 增加自定義值, socket, port, user及最重要的設置:
data目錄和base目錄. 最後的設置至少是這樣的:
[client]
port = 3307
socket =
/opt/mariadb-data/mariadb.sock
[mysqld]
datadir = /opt/mariadb-data
basedir = /opt/mariadb
port = 3307
socket =
/opt/mariadb-data/mariadb.sock
user = mariadb
從support-files文件中拷貝init.d腳本到對應的位置:
[root@centOS7 opt]# cp mariadb/support-files/mysql.server
/etc/init.d/mariadb
[root@centOS7 opt]# chmod +x /etc/init.d/mariadb
編輯/etc/init.d/mariadb,使用 mariadb替換 mysql設置項, 如下所示:
- # Provides: mysql
+ # Provides: mariadb
- basedir=
+ basedir=/opt/mariadb
- datadir=
+ datadir=/opt/mariadb-data
- lock_file_path="$lockdir/mysql"
+ lock_file_path="$lockdir/mariadb"
你需要告訴mariadb讀取唯一的cnf文件.
在$bindir/mysqld_safe之後加上--defaults-file=/opt/mariadb-data/my.cnf.
最後參數設置應該是這樣的:
# Give extra arguments to mysqld with the my.cnf file. This
script
# may be overwritten at next upgrade.
$bindir/mysqld_safe --defaults-file=/opt/mariadb-data/my.cnf
--datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args
>/dev/null 2>&1 &
顯式指定 my.cnf作為傳入參數,來運行 mysql_install_db:
[root@centOS7 opt]# cd mariadb
[root@centOS7 mariadb]# scripts/mysql_install_db
--defaults-file=/opt/mariadb-data/my.cnf
現在你可以這樣啟動MariaDB:
[root@centOS7 opt]# /etc/init.d/mariadb start
Starting MySQL SUCCESS
把MariaDB啟動設置為系統級別啟動:
[root@centOS7 opt]# cd /etc/init.d
[root@centOS7 init.d]# chkconfig --add mariadb
[root@centOS7 init.d]# chkconfig --levels 3 mariadb on
最後,測試現在有兩個資料庫服務實例在運行:
[root@centOS7 ~]# mysql -e "SELECT VERSION();"
+-----------+
| VERSION() |
+-----------+
| 5.6.19 |
+-----------+
[root@mariadb-near-mysql ~]# mysql -e "SELECT VERSION();"
--socket=/opt/mariadb-data/mariadb.sock
+--------------------+
| VERSION() |
+--------------------+
|10.0.12-MariaDB-log |
+--------------------+
⑨ mariadb主從 可以同步單個資料庫嗎
資料庫的優化設計對以後web項目能否承擔高並發所帶來的巨大負擔是個非常好的解決方案。主從同步和讀寫分離就是個常用的方法,主資料庫用來寫入數據,從資料庫用來查詢
分擔了主資料庫的一大部分工作,這樣做的好處是當主伺服器崩了之後,還是在從伺服器上獲取到數據,起到的備份的作用。