中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

操作mysql5.7升級到mariadb10.2.16方法

發布時間:2020-05-21 15:05:48 來源:網絡 閱讀:212 作者:三月 欄目:MySQL數據庫

下面講講關于操作mysql5.7升級到mariadb10.2.16方法,文字的奧妙在于貼近主題相關。所以,閑話就不談了,我們直接看下文吧,相信看完操作mysql5.7升級到mariadb10.2.16方法這篇文章你一定會有所受益。

    記錄一個mysql數據庫升級操作。

    客戶環境不能連外網,因此所有程序應用的安裝都只能通過提前下載離線軟件安裝包上傳到目標云服務器上進行安裝。原來的mysql5.7數據庫也是通過rpm軟件包進行安裝的。

    數據庫云服務器操作系統是紅帽的rhel7.2 ,64位。

    客戶的一臺mysql云服務器漏洞掃描發現有漏洞,數據庫版本如下:

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using  EditLine wrapper
Connection id:15176291
Current database:
Current user:mysql@localhost
SSL:Not in use
Current pager:stdout
Using outfile:''
Using delimiter:;
Server version:5.5.5-10.0.21-MariaDB-log MariaDB Server
Protocol version:10
Connection:Localhost via UNIX socket
Server characterset:latin1
Db     characterset:latin1
Client characterset:utf8
Conn.  characterset:utf8
UNIX socket:/opt/beh/core/mysql/sock/mysql.sock
Uptime:107 days 2 hours 11 min 53 sec

    版本有點奇怪,直接使用mysql --version看到的版本是mysql server 5.7.2 ,但是上面status中的Server version:卻是5.5.5-10.0.21-MariaDB-log MariaDB Server。反正不管怎么樣,都是需要升級到 mariadb 10.1以上的版本。到官網上查看最新的穩定版本,官網下載地址如下:

https://downloads.mariadb.org/

看到10.2.16是穩定版本,該版本的下載地址如下:

http://mariadb.mirror.iweb.com//mariadb-10.2.16/bintar-linux-systemd-x86_64/mariadb-10.2.16-linux-systemd-x86_64.tar.gz

升級思路:

    由于版本跨度太大,不適合逐個版本升級,采用重新安裝的方法,即將原來的版本卸載,然后重新安裝新的版本。

    為了保證數據安全,選擇另一臺同版本操作系統的云服務器作為備機,安裝一模一樣的數據庫版本,并且將原數據庫云服務器的數據庫通過mysqldump命令導出,并導入的備機中。備機準備好之后,業務應用程序修改數據庫連接配置連接到備機數據庫。然后再對原數據庫云服務器進行數據庫升級操作。

操作記錄:

    數據庫備份:

    將原數據庫進行全庫備份:
    mysqldump -u root -p --all-databases >mysqldump20180712.sql
    對業務數據庫hive也進行單獨備份:
    mysqldump -u root -p hive >hive20180712.sql

    數據庫備機安裝:

    原數據庫云服務器已經安裝的rpm包如下:

[root@hadoop001 dbdata]# rpm -qa|grep mysql

mysql-community-client-5.7.20-1.el7.x86_64

mysql-community-common-5.7.20-1.el7.x86_64

mysql-community-libs-5.7.20-1.el7.x86_64

mysql-community-devel-5.7.20-1.el7.x86_64

mysql-community-server-5.7.20-1.el7.x86_64    

 原數據庫云服務器中還保留著最初的mysql5.7的所有安裝rpm包,將原數據庫云服務器中的rpm安裝包文件全部拷貝到備機中:
    scp mysql-community-* hadoop002:/data_china/ywb/
    在備機中安裝mysql相關軟件包:
    yum localinstall mysql-community-*  
    
    備機啟動mysql數據庫:
    systemctl start mysql    

    數據庫備機數據導入:

將原數據庫中的數據庫備份文件傳到備機:
    scp mysqldump20180712.sql  hadoop002:/data_china/ywb/
    
    在備機上恢復mysql數據庫:
    mysql -u root -p <mysqldump20180712.sql 
    
    備機上驗證是否恢復成功:
    mysql -u root -p 
    mysql>show databases;
    mysql>use hive;
    mysql>show tables;
    mysql>quit;

    驗證成功之后,通知業務應用端修改程序端數據庫連接配置,使業務應用連接到備機數據庫。一切正常之后,開始對原數據庫云服務器進行升級。

    原數據庫升級:

    1、刪除原mysql5.7版本數據庫:

首先,將原數據庫云服務器的mysql5.7程序和數據庫徹底刪除:
rpm -e mysql-community-server-5.7.20-1.el7.x86_64
rpm -e mysql-community-client-5.7.20-1.el7.x86_64
rpm -e mysql-community-common-5.7.20-1.el7.x86_64
rpm -e mysql-community-libs-5.7.20-1.el7.x86_64
rpm -e mysql-community-devel-5.7.20-1.el7.x86_64
    注意,執行上面的命令的時候其中有幾個命令會失敗,是由于有依賴關系,相關順序調整一下即可。    
 刪除殘余文件,通過下面2條命令查找殘余文件:
    find / -name mysql
    whereis mysql

    上面兩個命令會查找mysql相關文件,將相關的文件能刪除的都刪除,如果為了保險,可以將一些不確定能刪的文件mv到一個特定目錄。謹慎些還是不會錯。    

    mysql5.7刪除干凈之后,接下來就是按照新的mariadb 10.2.16版本的數據庫:

    2、安裝新版本mariadb 10.2.16 數據庫

    將上面準備好的軟件安裝包mariadb-10.2.16-linux-systemd-x86_64.tar.gz 上傳到原數據庫云服務器hadoop001中,然后解壓:

    tar xzvf mariadb-10.2.16-linux-systemd-x86_64.tar.gz     

#更改安裝目錄:注意不要提前建立/usr/local/mysql目錄,直接放過去即可
mv mariadb-10.2.16-linux-systemd-x86_64 /usr/local/mysql/
     
#進入/usr/local/mysql目錄
[root@toydns mysql]#cd  /usr/local/mysql
#在/usr/local/mysql/support-files/下的配置文件模板,已經配置好的部分參數,分別用于不同的環境,這里說明一下:
my-small.cnf 這個是為小型數據庫或者個人測試使用的,不能用于生產環境
my-medium.cnf 這個適用于中等規模的數據庫,比如個人項目或者小型企業項目中,
my-large.cnf 一般用于專門提供SQL服務的云服務器中,即專門運行數據庫服務的主機,配置要求要更高一些,適用于生產環境
my-huge.cnf 用于企業級云服務器中的數據庫服務,一般更多用于生產環境使用
所以根據以上幾個文件,如果個人使用或者測試,那么可以使用前兩個模板;企業云服務器或者64G以上的高配置服務器可以使用后面兩個模板,另外也可以根據自己的需求來加大參數和擴充配置獲得更好的性能。
[root@toydns mysql]# ll support-files/
-rw-r--r--. 1 1021 1004  4914 Nov 27 18:32 my-huge.cnf
-rw-r--r--. 1 1021 1004 20421 Nov 27 18:32 my-innodb-heavy-4G.cnf
-rw-r--r--. 1 1021 1004  4901 Nov 27 18:32 my-large.cnf
-rw-r--r--. 1 1021 1004  4914 Nov 27 18:32 my-medium.cnf
-rw-r--r--. 1 1021 1004  2840 Nov 27 18:32 my-small.cnf
#復制my-medium.cnf到etc下并改名為my.cnf,修改數據庫文件存放的目錄
cp support-files/my-medium.cnf  /etc/my.cnf
vi /etc/my.cnf
# The MariaDB server
[mysqld]
port            = 3306   
socket          = /tmp/mysql.sock
basedir = /usr/local/mysql   //mysql目錄
datadir= /var/lib/mysql  //數據存放位置
innodb_file_per_table = on  //每張表一個單獨文件,便于管理
skip_name_resolve = on  //忽略反向解析,加快訪問速度
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
:wq保存后給權限
注意,datadir= /var/lib/mysql 這個目錄需要提前準備好:
mkdir /var/lib/mysql
chown mysql:mysql /var/lib/mysql
#添加MySQL到PATH環境變量里面去,省的以后敲命令麻煩
[root@toydns mysql]# vi /etc/profile.d/mysql.sh
export  PATH=/usr/local/mysql/bin:$PATH
source /etc/profile.d/mysql.sh  使這個配置文件及時生效
#初始化mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql
#創建mariadb自啟動腳本,并加入開機啟動
cp /usr/local/mysql/support-files/systemd/mariadb.service  /usr/lib/systemd/system/
此處有坑,特別注意: 
/usr/lib/systemd/system/mariadb.service 這個腳本中有一個參數 ProtectSystem=full ,需要改為false
# Prevent writes to /usr, /boot, and /etc
ProtectSystem=false
默認情況下ProtectSystem=full,/usr目錄被保護不能寫入數據,上面設置的datadir目錄最初是設置在/usr/local/mysql/data中,執行
systemctl start mariadb
的時候會報錯無法寫入XXX文件,因為/usr整個目錄都被寫保護。解決方法有兩個,一個是將ProtectSystem=full 改為ProtectSystem=false ,一個就是更改datadir目錄位置,不要放在/usr目錄下。我在這里是2個地方都改掉。
最后使能服務,使之主機重啟后能自動啟動。
systemctl enable mariadb
啟動mysql數據庫:
systemctl start mariadb

MySQL的安全設置

[root@toydns mysql]# ./bin/mysql_secure_installation 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):   //直接回車,默認為空
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y     //是否設置MySQL管理員root的密碼,y設置,輸入2次
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y    //是否刪除匿名賬戶 y刪除
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] n   //是否不允許root用戶遠程登陸,n不禁用
 ... skipping.
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y   //是否刪除test測試數據庫,y刪除
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y   //重新加載可用的數據庫表  y 是
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

    3、導入數據庫備份

    新版本數據庫mariadb 10.2.16 安裝完成之后,將原來備份的數據庫導入:

    mysql -u root -p <mysqldump20180712.sql

    注意,如果應用端在這段時間有數據更新,需要從備機導出數據庫文件,使用備機的最新數據備份進行恢復。

    收尾工作:

    所有這些工作完成后,通知應用業務廠家將應用的數據庫連接指向升級后的數據庫。

    由于原來的數據庫版本是mysql5.7,最新的數據庫是mariadb10.2.16,應用端的java程序連接driver需要改,連接字符串也需要修改。這一塊內容不做描述。

    應用廠家的應用程序使用的普通用戶,比如hadoop用戶,用戶的環境變量和用戶權限需要做一定的設置,環境變量參考在用戶目錄下的 .bashrc 或者 .bash_profile 中增加這一行:

export  PATH=/usr/local/mysql/bin:$PATH
    修改后運行source命令使之生效:  source ~/.bashrc
    進入mysql進行權限賦予:
    grant all privileges on *.* to hadoop@"%" identified by 'xxxxxx';
    flush privileges;

總結:

    由于版本跨度太大,mysql5.7到mariadb10.2.16 的升級其實都不能叫做“升級”了,實際是就是新安裝,關鍵是找到備機,將原有的數據庫備份到備機上解決后面重裝數據庫的后顧之憂。

    數據庫安裝的方法可以通過聯網yum 安裝,或者離線通過軟件包進行安裝,在這個案例中,由于客戶云服務器不能連接外網,因此全部的安裝都是使用下載好軟件安裝包進行安裝。這種離線安裝方式相對來說效率更低一些,也容易出錯。

對于以上操作mysql5.7升級到mariadb10.2.16方法相關內容,大家還有什么不明白的地方嗎?或者想要了解更多相關,可以繼續關注我們的行業資訊板塊。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

册亨县| 凌源市| 抚顺市| 武义县| 祁阳县| 岐山县| 渝中区| 扎鲁特旗| 延川县| 洛南县| 从江县| 双峰县| 湟源县| 会理县| 江川县| 普陀区| 和龙市| 鄂托克前旗| 富蕴县| 内丘县| 望江县| 周口市| 望城县| 涪陵区| 团风县| 漯河市| 柘荣县| 南江县| 三原县| 博白县| 柘城县| 全南县| 汾西县| 高陵县| 江津市| 临高县| 九台市| 凯里市| 正蓝旗| 兴仁县| 施甸县|