mysql 8.0 集群_集群架构03·MySQL初识,mysql8.0环境安装,mysql多实例
官方網址
https://dev.mysql.com/downloads/mysql/
社區版本分析
MySQL5.5:默認存儲引擎改為InnoDB,提高性能和可擴展性,增加半同步復制
MySQL5.6:提高InnoDB性能,支持延遲復制
MySQL5.7:提升性能,增強復制功能
https://www.jianshu.com/p/6f2cb7874abd MySQL 5.6 ,5.7 ,8.0? ? 在安裝部署的異同
DBA干點啥子?????
初級:各版本、各平臺安裝搭建、升級
中級:體系結構原理、基礎管理(啟動關閉、初始化配置文件管理、多實例管理、用戶權限管理、基本SQL(增刪改查))、
日志管理、備份與恢復、主從復制(構建、狀態監控)
高級:高可用(MGR、InnoDB Cluster)、高性能(優化)
常規安裝MySQL
1、檢查版本和系統的適配度
2、環境介紹,將軟件包傳輸到/root目錄下,解壓到/usr/local官方推薦安裝路徑
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# ls -sh |grep mysql
376M mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
[root@localhost ~]# mv /root/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# tar -xvf mysql-8.0.13-linux-glibc2.12-x86_us:m64.tar.xz
[root@localhost local]# mv mysql-8.0.13-linux-glibc2.12-x86_64 mysql
[root@localhost local]# du -h --max-depth=1 #解壓之后文件大小為2G
2.0G./mysql
#MySQL底層是C和C++寫的
3、新建用戶,創建數據目錄,修改屬性,初始化MySQL
[root@localhost mysql]# tree -L 1 -d
├── bin #可執行文件目錄
├── docs
├── include
├── lib
├── man
├── share
└── support-files
[root@localhost mysql]# mkdir data
#support-files中的mysql.server,datadir=/usr/local/mysql/data ,所以才默認安裝到/usr/local
[root@localhost mysql]# groupadd mysql? ?#添加用戶組mysql
[root@localhost mysql]# useradd mysql -g mysql? ? #添加用戶mysql
[root@localhost local]# cd mysql
[root@localhost mysql]# chown -R mysql:mysql data #增加mysql用戶,修改屬性
[root@localhost mysql]# bin/mysqld --initialize --user=mysql --datadir /usr/local/mysql/data/
#數據庫初始化,指定數據目錄位置 9zyH:/491o5Z
2019-10-12T02:14:19.114262Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: R=lxprgpD0oj #臨時密碼,登錄之后會讓你修改密碼
2019-10-12T02:14:20.505592Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.13) initializing of server has completed #初始化已經完成
#如果報錯顯示讓你安裝一個libaio包,yum一個就OK
#初始化數據庫,指定用戶和數據目錄,返回一個臨時密碼,如果忘記初識密碼,重新初始化,報錯是因為你沒有刪除data目錄里下的文件,初始化后data目錄會從空目錄增加很多目錄
4、啟動數據庫
[root@localhost data]# cp ../support-files/mysql.server /etc/init.d/
[root@localhost data]# vim /etc/my.cnf
#系統默認數據庫文件,marDB,我們不需要,刪除就可以,否則就會報錯
[root@localhost data]# /etc/init.d/mysql.server start #臥槽,居然真的報錯
Starting MySQL.2019-10-12T02:24:24.836889Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
[root@localhost data]# cp /etc/my.cnf{,.bak} #習慣性的備份一下,說不定以后會用到
[root@localhost data]# rm -fr /etc/my.cnf
[root@localhost data]# /etc/init.d/mysql.server start #重新啟動,成功!!!
Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'.. SUCCESS!
5、查看端口和進程,添加環境變量
[root@localhost data]# ps -ef |grep mysql
[root@localhost data]# netstat -lnatup|grep mysqld #端口查看一下 3306和33060? ,33060mysqlx的一個服務
tcp6 0 0 :::33060 :::* LISTEN 1808/mysqld
tcp6 0 0 :::3306 :::* LISTEN 1808/mysqld
[root@localhost bin]# cd
[root@localhost ~]# vi .bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
#把命令路徑加入到PATH 。如果命令位置變了,重新添加,基礎的基礎
[root@localhost ~]# source .bash_profile #修改之后加載一下
6、測試,重置密碼,顯示數據庫
5.7 修改密碼:set password=password('mysql');
8.0修改密碼:alter user user() identified by 'mysql';
[root@localhost ~]# mysqladmin -uroot -p password #命令交互式修改管理員密碼
Enter password:
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@localhost ~]# mysql -u root -p
Enter password: #把初始化的那個密碼寫到這里就OK
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. #報錯提示讓你修改密碼
mysql> alter user user() identified by 'mysql';? ?#突然覺得英語學得好的人,學SQL肯定快,因為SQL語句就是用英語的幾個
Query OK, 0 rows affected (0.11 sec) #修改密碼成功
mysql> show databases; #用一下,試一試
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
#修改配 置文件之前先把數據庫關了
systemctl start/stop/restart/status mysqld
7、本地管理員用戶密碼忘記
版本8重置密碼流程:在配置文件中添加免密碼登錄,登錄系統,修改系統庫中user表的密碼數據,
刪除配置文件的密碼登錄,重啟服務,登錄即可
實踐
在【mysqld】模塊添加:skip-grant-tables
或者/etc/init.d/mysql.server start --skip-grant-tables
#我感覺意思就是說啟動的時候跳過權限這個表,就實現無密碼登錄了
mysql>mysql -u root -p #直接回車就可以進入數據庫
mysql>use mysql
mysql> update user set authentication_string ='' where user ='root';
最后刪除免密碼登錄就OK
mysql 常用參數:
-u 用戶
-p 密碼
-h IP
-P 端口
-S socket文件
-e 免交互執行命令
< 導入SQL腳本
非常規安裝
1、將數據文件位置轉移,添加/etc/my.cnf的模塊
修改數據目錄到其他目錄,先把原來的/usr/local/mysql/data 整個目錄移動到 /data ,最在/etc/my.cnf 中添加一個模塊
[mysqld]
datadir=/data/mysql/data
[root@localhost init.d]# /etc/init.d/mysql.server start
Starting MySQL.. SUCCESS!
[root@localhost mysql]# ls #把原來的data目錄搬到了外面/data
bin docs include lib LICENSE LICENSE.router man README README.router share support-files
也可以把整個mysql目錄搬到其他地方,最后只需要在/etc/my.cnf中宣告basedir=/data/mysql/
另外也可以在初始化的時候指定這兩個目錄的位置,就不用搬來搬去了,
環境變量也需要添加
2、MySQL多實例
配置文件復制一份,添加一個新的端口3307
連接方式不同,需要指定sock文件 -S /tmp/mysql3307.sock
拷貝之后修改文件所屬者和所屬組
mysql> show variables like '%sock%';
+-----------------------------------------+------------------+
| Variable_name | Value |
+-----------------------------------------+------------------+
| mysqlx_socket | /tmp/mysqlx.sock |
| performance_schema_max_socket_classes | 10 |
| performance_schema_max_socket_instances | -1 |
| socket | /tmp/mysql.sock |
+-----------------------------------------+------------------+
[root@localhost mysql2]# cat /etc/my3307.cnf
[mysqld]
basedir=/data/mysql2
datadir=/data/mysql2/data
port=3307
socket=/tmp/mysql3307.sock
mysqlx_port=33070
mysqlx_socket=/tmp/mysqlx33070.sock
[root@localhost mysql2]# bin/mysqld --defaults-file=/etc/my3307.cnf --user=mysql & #后臺啟動該實例進程
2019-10-12T06:23:49.364951Z 0 [System] [MY-010116] [Server] /data/mysql2/bin/mysqld (mysqld 8.0.13) starting as process 16877
2019-10-12T06:23:50.692041Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx33070.sock' bind-address: '::' port: 33070
3、查看端口和臨時文件夾
[root@localhost ~]# netstat -lntup |grep mysql
tcp6 0 0 :::3307 :::* LISTEN 16877/bin/mysqld
tcp6 0 0 :::33070 :::* LISTEN 16877/bin/mysqld
tcp6 0 0 :::33060 :::* LISTEN 16821/mysqld
tcp6 0 0 :::3306 :::* LISTEN 16821/mysqld
[root@localhost ~]# ls /tmp/
ks-script-TlWukQ mysqlx.sock
mysql3307.sock mysqlx.sock.lock
mysql3307.sock.lock mysql.sock mysql.sock.lock
mysqlx33070.sock mysqlx33070.sock.lock
4、指定socket文件啟動mysql實例
[root@localhost ~]# mysql -u root -S /tmp/mysql3307.sock -p
Enter password:
5、測試,添加數據庫,查看3307實例的data目錄
mysql> create database course;#創建數據庫course
Query OK, 1 row affected (0.03 sec)
mysql> show databases; #另一個數據庫對比,說明實例添加成功
[root@localhost ~]# ll /data/mysql2/data/ -t
#新建的數據庫在該進程的數據目錄下會有一個新的目錄
drwxr-x---. 2 mysql mysql 6 Oct 12 14:29 course
6、錯誤日志,數據文件目錄
mysql> show variables like '%log_error%';
[root@localhost ~]# tail -1 /data/mysql/data/localhost.localdomain.err
2019-10-12T06:16:59.715604Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx.sock' bind-address: '::' port: 33060
可以修改錯誤日志文件目錄位置在/etc/my.cnf
log_error=/data/mysql/data/abc.log
7、指定允許的連接 地址
bind-address(默認是*)
*代表接受所有來自IPV4、 IPV6主機網卡的TCP/IP連接
0.0.0.0代表接受所有來自IPV4主機網卡的TCP/IP的連接
指定的IP如127.0.0.1,代表只接受此地址請求的TCP/IP連接,只接受本地
8、參數
default-storage-engine(默認是InnoDB):指定MySQL的默認存儲引擎
default- time -zone:指定默認時區,如果沒有指定則和系統默認時區一致
9、關閉防火墻
[root@localhost mysql]# systemctl stop firewalld
[root@localhost mysql]# systemctl status firewalld
Active: inactive (dead) since Sun 2019-10-13 15:13:52 CST; 7s ago
總結
以上是生活随笔為你收集整理的mysql 8.0 集群_集群架构03·MySQL初识,mysql8.0环境安装,mysql多实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows mysql 免安装_wi
- 下一篇: mapper文件cant resolve