后續mysql更新到了``````````
開始升級mysql (mysql-5.7.18升到mysql-5.7.35)
登陸mysql網站 www.mysql.com
mysql安裝包下載地址:
https://downloads.mysql.com/archives/community/
*************************第一種升級方法*******************************
mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
#查看mysql版本號
root@test bin]# ./mysql -V ./mysql Ver 14.14 Distrib 5.7.18, for linux-glibc2.5 (x86_64) using EditLine wrapper
#開始備份數據庫(備份腳本)
[root@test ~]# cat >> back.sh << EOF #!/bin/bash mysqldatabase="sys mysql performance_schema information_schema sltas_ods" date=`date +%Y%m%d ` passwd='123456' for i in ${mysqldatabase} do mysqldump -uroot -p${passwd} --databases ${i} > /home/sltas_ods_bak/sltas_ods_${date}.sql done EOF
備份完成之后,將mysql停掉
[root@test bin]# /etc/init.d/mysqld stop Shutting down MySQL.. SUCCESS!
#解壓新的mysql包
[root@test bin]# tar xf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
#將舊的mysql的bin目錄備份打包
[root@test bin]# cd /usr/bin [root@test bin]# tar zcf mysql.tar.gz mysql [root@test bin]# tar zcf mysqldump.tar.gz mysqldump [root@test bin]# rm -rf mysql [root@test bin]# rm -rf mysqldump
[root@test mysql]# cd /usr/local/mysql [root@test mysql]# tar zcf bin_5.7.18.tar.gz bin [root@test mysql]# rm -rf bin
[root@test init.d]# cd /etc/init.d/ [root@test init.d]# tar zcf mysqld_5.7.18.tar.gz mysqld [root@test init.d]# rm -rf mysqld
#將新解壓的mysql-5.7.35的bin目錄復制到mysql-5.7.18目錄下
[root@test]# cd /home/mysql-5.7.35-linux-glibc2.12-x86_64 [root@test]# /bin/cp bin /usr/local/mysql/ [root@test]# cd /usr/local/mysql/bin/ [root@test]# cp mysql /usr/bin [root@test]# cp mysqldump /usr/bin
#將新的mysqld版本copy到/etc/init.d/ 下
[root@test]# cp /home/mysql-5.7.35-linux-glibc2.12-x86_64/support-files/mysql.server /etc/init.d/mysqld
#修改參數
[root@test]# vim /etc/init.d/mysqld basedir=/usr/local/mysql datadir=/home/data/sltas_ods
#啟動mysql
[root@test bin]# /etc/init.d/mysqld start Starting MySQL. SUCCESS!
#查看版本號
[root@test bin]# ./mysql -V ./mysql Ver 14.14 Distrib 5.7.35, for linux-glibc2.12 (x86_64) using EditLine wrapper
#執行mysql_upgrade進行檢查
[root@test bin]# ./mysql_upgrade -uroot -p --force --skip-version-check -S /tmp/mysql.sock
#查看數據是否正確,檢查賬號密碼是否可用。
*************************第二種二進制數據庫升級方法*********************************
開始升級mysql (mysql-5.7.18升到mysql-5.7.35)
登陸mysql網站 www.mysql.com
mysql安裝包下載地址:
https://downloads.mysql.com/archives/community/
#重新初始化mysql,版本為mysql5.7.35
#上傳mysql新版本的部署包
[root@test]# rz mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz [root@test]# tar xf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz [root@test]# mv mysql-5.7.35-linux-glibc2.12-x86_64 /home/mysql3307
#創建mysql數據目錄
[root@test]# mkdir /home/mysql3307/data -p [root@test]# chown mysql.mysql /home/mysql3307/* -R
#創建數據庫配置文件
[root@test]# vim /etc/my3307.cnf [root@test]# cat /etc/my3307.cnf | egrep -v '^#|^$' [client] port = 3307 socket = /tmp/mysql3307.sock [mysqld] port = 3307 socket = /tmp/mysql3307.sock datadir = /home/mysql3307/data skip-external-locking max_connections = 100000 max_connect_errors = 6000 open_files_limit = 65535 table_open_cache = 128 key_buffer_size = 16M max_allowed_packet = 1024M 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 log_error = /home/mysql3307/data/mysql-error.log slow_query_log = 1 lower_case_table_names=1 long_query_time = 1 slow_query_log_file = /home/mysql3307/data/mysql-slow.log expire_logs_days = 7 character-set-server=utf8 collation-server=utf8_general_ci performance_schema = 0 explicit_defaults_for_timestamp sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" log-bin=mysql-bin binlog_format=row server-id = 3 binlog-rows-query-log-events=true binlog_row_image=full log-bin-use-v1-row-events=1 binlog_cache_size=2M max_binlog_size=512M sync_binlog=0 collation-server = utf8_unicode_ci innodb_data_home_dir = /home/mysql3307/data innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = /home/mysql3307/data innodb_buffer_pool_size = 64M innodb_file_per_table = 1 innodb_open_files = 500 innodb_write_io_threads = 4 innodb_read_io_threads = 4 innodb_thread_concurrency = 0 innodb_purge_threads = 1 innodb_log_file_size = 5M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 bulk_insert_buffer_size = 8M myisam_sort_buffer_size = 8M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 interactive_timeout = 28800 wait_timeout = 28800 plugin-load = validate_password.so validate_password_length = 10 validate_password_policy = 1 validate-password = FORCE_PLUS_PERMANENT [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout expire_logs_days = 10
#############################################################################
#初始化數據庫
第一次初始化報錯 [root@test bin]# ./mysqld_safe --defaults-file=/etc/my3307.cnf --user=mysql & [1] 76836 [root@test bin]# Logging to '/home/mysql3307/data/mysql-error.log'. 2021-12-02T03:58:51.029328Z mysqld_safe Starting mysqld daemon with databases from /home/mysql3307/data 2021-12-02T03:58:53.205213Z mysqld_safe mysqld from pid file /home/mysql3307/data/test.pid ended [1]+ 完成 ./mysqld_safe --defaults-file=/etc/my3307.cnf --user=mysql [root@test bin]# [root@test bin]# [root@test bin]# ps -ef | grep mysql root 67800 65346 0 10:29 pts/1 00:00:00 mysql -uroot -p root 77755 69643 0 11:59 pts/4 00:00:00 grep --color=auto mysql
查看日志根據日志排查錯誤
vim /home/mysql3307/data/mysql-error.log
#########################################################################################################
#再次初始化沒有報錯
[root@test]# cd /home/mysql3307/bin/ [root@test]# ./mysql_install_db --datadir=/home/mysql3307/data --basedir=/home/mysql3307 --user=mysql 2021-12-02 11:57:20 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize 2021-12-02 11:57:24 [WARNING] The bootstrap log isn't empty: 2021-12-02 11:57:24 [WARNING] 2021-12-02T03:57:20.836189Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead 2021-12-02T03:57:20.836793Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000) 2021-12-02T03:57:20.836810Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)
#初始化數據庫成功,開啟數據庫
[root@test]# cd /home/mysql3307/bin/ [root@test]# ./mysqld_safe --defaults-file=/etc/my3307.cnf --user=mysql & [1] 79471 [root@test bin]# 2021-12-02T04:32:04.065550Z mysqld_safe Logging to '/home/mysql3307/data/mysql-error.log'. 2021-12-02T04:32:04.117386Z mysqld_safe Starting mysqld daemon with databases from /home/mysql3307/data
#查看進程數據庫啟動成功
[root@test bin]# ps -ef | grep mysql root 67800 65346 0 10:29 pts/1 00:00:00 mysql -uroot -p root 79465 79431 0 12:31 pts/0 00:00:00 tailf /home/mysql3307/data/mysql-error.log root 79471 69643 0 12:32 pts/4 00:00:00 /bin/sh ./mysqld_safe --defaults-file=/etc/my3307.cnf --user=mysql mysql 80287 79471 3 12:32 pts/4 00:00:00 /home/mysql3307/bin/mysqld --defaults-file=/etc/my3307.cnf --basedir=/home/mysql3307 --datadir=/home/mysql3307/data --plugin-dir=/home/mysql3307/lib/plugin --user=mysql --log-error=/home/mysql3307/data/mysql-error.log --open-files-limit=65535 --pid-file=test.pid --socket=/tmp/mysql3307.sock --port=3307
#數據庫密碼進行修改
[root@test]# vi /etc/my.cnf 在[mysqld]下面增加一行 skip-grant-tables
#重啟mysql
[root@test]# kill -9 mysql pid
#開啟mysql
[root@test]# cd /home/mysql3307/bin/ [root@test bin]# ./mysqld_safe --defaults-file=/etc/my3307.cnf --user=mysql & [1] 86335 [root@test bin]# 2021-12-02T06:19:40.972378Z mysqld_safe Logging to '/home/mysql3307/data/mysql-error.log'. 2021-12-02T06:19:41.012897Z mysqld_safe Starting mysqld daemon with databases from /home/mysql3307/data
#查看進程
[root@test bin]# ps -ef | grep mysql root 86335 69643 0 14:19 pts/4 00:00:00 /bin/sh ./mysqld_safe --defaults-file=/etc/my3307.cnf --user=mysql mysql 87167 86335 4 14:19 pts/4 00:00:00 /home/mysql3307/bin/mysqld --defaults-file=/etc/my3307.cnf --basedir=/home/mysql3307 --datadir=/home/mysql3307/data --plugin-dir=/home/mysql3307/lib/plugin --user=mysql --log-error=/home/mysql3307/data/mysql-error.log --open-files-limit=65535 --pid-file=test.pid --socket=/tmp/mysql3307.sock --port=3307 root 87198 69643 0 14:19 pts/4 00:00:00 grep --color=auto mysql
#登陸數據庫修改root密碼
[root@test bin]# ./mysql -uroot -p -S /tmp/mysql3307.sock ---直接回車不需要輸入密碼 set password = password('NTJiM2MzNTIyMGZm'); ------修改root密碼
#數據庫升級完成。
歡迎進群討論:QQ群294668383(有意向可以添加)