資料庫介紹(MySQL安裝 體繫結構、基本管理)

来源:http://www.cnblogs.com/clsn/archive/2017/12/14/8038964.html
-Advertisement-
Play Games

資料庫簡介、資料庫相關產品、Mysql簡介、mysql資料庫的安裝、客戶端與伺服器端模型、客戶端與伺服器端模型、MySQL管理、mysql多實例配置、mysql忘記密碼怎麼辦? ...


第1章 資料庫介紹及mysql安裝

 

1.1 資料庫簡介

  資料庫,簡而言之可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據運行新增、截取、更新、刪除等操作。

  所謂“資料庫”系以一定方式儲存在一起、能予多個用戶共用、具有儘可能小的冗餘度、與應用程式彼此獨立的數據集合。

1.1.1 什麼是數據

  數據是指對客觀事件進行記錄並可以鑒別的符號,是對客觀 事物的性質、狀態以及相互關係等進行記載的物理符號或這些物 理符號的組合。它是可識別的、抽象的符號。

1.1.2 資料庫管理系統

非關係型資料庫

  NoSQL:非關係型資料庫(Not only SQL)

不是否定關係型資料庫,做關係型資料庫的的補充。
想做老大,先學會做老二。

 

關係型資料庫

  關係型資料庫的特點

二維表
典型產品 Oracle傳統企業,MySQL是互聯網企業
數據存取是通過SQL(結構化查詢語句)
最大特點,數據安全性方面強(ACID) 

1.1.3 NoSQL特性總覽

  l  不是否定關係型資料庫,而是作為補充,現在也有部分替代的趨勢。

  l  關註高性能,高併發,靈活性,忽略和上述無關的功能。

  l  現在也在提升安全性和使用功能。

  l  典型產品:Redis(持久化緩存,兩個半天)、MongoDB(最接近關係型數據 的NoSQL)、Memcached。

  l  管理不適用SQL管理,而是用一些特殊的 API 或 數據介面。

1.1.4 NoSQL的分類、特點、典型產品

  鍵值(KV)存儲:Memcached、Redis

  列存儲(column-oriented):HBASE(新浪,360)、Cassandra(200台伺服器集群 )

  文檔資料庫(document-oriented):MongoDB(最接近關係型資料庫的NoSQL)

  圖形存儲(Graph):Neo4j

    數據來源: https://db-engines.com/en/ranking

1.2 資料庫相關產品

1.2.1 Oracle公司產品介紹

  Oracle資料庫版本介紹

    7--8i--9i--10g—11g--12c--18c(?)

  Oracle的市場應用

    a)  市場份額第一,趨勢遞減

    b)  市場空間,傳統企業

    c)  傳統企業也在互聯網化

  MySQL資料庫版本介紹

    5.0--5.1--5.5--5.6--5.7--8.0

  MySQL的市場應用

    a)  中、大型互聯網公司

    b)  市場空間:互聯網領域第一

    c)  趨勢明顯

    d)  同源產品:MariaDB、perconaDB

1.2.2 其他公司產品

  微軟:SQL Server

微軟和sysbase合作開發的產品,後來自己開發,windows平臺
3,4線小公司,傳統行業在用

  IBM :DB2資料庫

      市場占有量小

      目前只有:國有銀行(人行、中國銀行、工商銀行等)、中國移動應用。

下麵三者廣泛應用在大型互聯網公司

  PostgreSQL
  MongoDB
  Redis

1.3 Mysql簡介

1.3.1 mysql資料庫發展史

1 1979年,報表工具Unireg出現。
2 1985 年,以瑞典David Axmark 為首,成立了一家公司(AB前身),IASM引擎出現。
3 1990年,提供SQL支持。
4 1999-2000年,MySQL AB公司成立,並公佈源碼,開源化。
5 2000年4月BDB引擎出現,支持事務。
6 2008年1月16日,Sun(太陽微系統)正式收購MySQL。
7 2009年4月20日,甲骨文公司宣佈以每股9.50美元,74億美元的總額收購Sun電腦公司,MySQL 轉入Oracle 門下。
8 2013年6月18日,甲骨文公司修改MySQL授權協議,移除了GPL。但隨後有消息稱這是一個bug。

1.3.2 MySQL的特點簡介

  開源、社區版免費、簡單,使用方便,可靠、穩定、安全、社區活躍

1.3.3 mysql產品線的介紹

mysql產品線(主線)

  3.26--5.2版本

    – 正宗後代

    – Centos5、6中預設有5.1版本

    – Centos7中預設是MariaDB

  5.4--5.7 ,8.0版本

    – 借鑒社區好的貢獻,進一步開發的版本

    – 主流版本:5.5 5.6 5.7

  MySQL Cluster 6.0 版本&更高

    – 類似於Oracle RAC,硬體要求高。

    – 一般各大網站沒有人用

         mysql產品線(派生產品)

                  派生版本有Drizzle、MariaDB、Percona Server及OurDelta等。

1.3.4 企業生產場景選擇MySQL資料庫建議:

1) 穩定版:選擇開源的社區版的穩定版GA版本 
2) 產品線:可以選擇5.1或5.5 互聯網公司主流5.5,其次是5.1和5.6 
3) 選擇MySQL資料庫GA版發佈後6個月以上的GA版本。 
4)要選擇前後幾個月沒有大的BUG修複的版本,而不是大量修複BUG的集中版本 
5)最好向後較長時間沒有更新發佈的版本 
6)要考慮開發人員開發程式使用的版本是否相容你選的版本 
7)作為內部開發人員開發測試資料庫環境,跑大概3-6個月的事件 
8)優先企業非核心業務採用新版本的資料庫GA版本軟體 
9)向DBA高手請教,或者在及技術氛圍好的群里和大家一起交流,使用真正的高手們用過的好用的GA版本產品
10)若是沒有重要的功能BUG或性能瓶頸,則可以開始考慮作為任何任務數據服務的後端資料庫軟體

1.4 mysql資料庫的安裝

1.4.1 系統環境說明

[root@db02 ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@db02 ~]# uname -r
2.6.32-696.el6.x86_64
[root@db02 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@db02 ~]# getenforce 
Disabled
[root@db02 ~]# hostname  -I 
10.0.0.52 172.16.1.52

1.4.2 mysql編譯安裝

  安裝依賴包

yum  install  -y  ncurses-devel libaio-devel

  安裝cmake編譯工具

  cmake

  定製功能:存儲引擎、字元集、壓縮等

  定製安裝位置、數據存儲位置、文件位置(socket)

yum install cmake -y

  創建mysql管理用戶

useradd -s /sbin/nologin -M mysql -u1000
id mysql

  下載mysql軟體包,解壓

mkdir  -p /server/tools 
cd /server/tools
wget -q http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz
tar xf mysql-5.6.36.tar.gz

         註:這裡使用的是sohu的鏡像源進行下載(軟體版本5.6.36)

    官方下載方式參考:http://www.cnblogs.com/clsn/p/8025324.html#_label4

進入查詢目錄,使用cmake進行編譯,安裝,創建軟連接,過程時間較長。

cd mysql-5.6.36
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.36 \
-DMYSQL_DATADIR=/application/mysql-5.6.36/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.36/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
make && make install
ln -s /application/mysql-5.6.36/ /application/mysql

1.4.3 資料庫安裝後的操作

  複製配置文件

\cp  /application/mysql/support-files/my-default.cnf /etc/my.cnf

  編譯的MySQL可以暫時不需要設置配置文件。

  註意:如果以前操作系統中安裝過rpm格式的mysql,系統中可能會遺留/etc/my.cnf文件,我們需要將它刪除掉

初始化資料庫

/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql

  防止報錯:資料庫啟動會提示,找不到xx/tmp/mysql.sock,原因是5.6.36版本不會自動創建tmp目錄,需要我們手工創建。

mkdir /application/mysql/tmp

  修改程式目錄的屬主,屬組

chown -R mysql.mysql /application/mysql/

  複製啟動腳本,並修改許可權

cp support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld

  添加環境變數,使用mysql命令

echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
tail -1 /etc/profile
source /etc/profile
echo $PATH
mysql

1.4.4 資料庫安全設置

  設置root用戶密碼

mysqladmin -u root password '123456'
mysql -uroot -p123456

  優化資料庫(清理用戶及無用資料庫)

select user,host from mysql.user;
drop user ''@'db02';
drop user ''@'localhost';
drop user 'root'@'db02';
drop user 'root'@'::1';
select user,host from mysql.user;
drop database test;
show databases;

1.5 mysql 5.7版本安裝說明

  主機系統環境說明

[root@db13 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@db13 ~]# uname -r
2.6.32-696.el6.x86_64
[root@db13 ~]# getenforce
Disabled
[root@db13 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@db13 ~]# hostname -I
10.0.0.153 172.16.1.153

  獲取軟體(採用二進位包方式進行安裝)

mkdir -p /server/tools
cd /server/tools
wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

  解壓

tar xf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

  將軟體移動到程式目錄,創建軟連接

mkdir -p /application/
mv mysql-5.7.17-linux-glibc2.5-x86_64 /application/mysql-5.7.17
ln -s /application/mysql-5.7.17 /application/mysql

  添加mysql用戶,併進行授權

useradd -M -s /sbin/nologin  -u 1000 mysql
chown -R mysql.mysql /application/mysql-5.7.17

  初始化資料庫

/application/mysql-5.7.17/bin/mysqld --initialize --user=mysql --basedir=/application/mysql-5.7.17 --datadir=/application/mysql-5.7.17/data

         初始化時註意最後一行輸出root密碼

2017-12-13T08:40:31.760309Z 1 [Note] A temporary password is generated for root@localhost: )*1E7=fYd&>i

  拷貝配置文件和啟動文件

\cp /application/mysql-5.7.17/support-files/my-default.cnf /etc/my.cn
\cp \application/mysql-5.7.17/support-files/mysql.server /etc/init.d/mysqld

# 修改啟動文件內容(配置目錄)

  將程式安裝到 /usr/local/ 下 可以省略這步操作

sed 's#/usr/local#/application#g' /application/mysql-5.7.17/bin/mysqld_safe /etc/init.d/mysqld -i

  啟動mysql

[root@db13 tools]# /etc/init.d/mysqld start 
Starting MySQL.Logging to '/application/mysql/data/db13.err'.
 SUCCESS! 
[root@db13 tools]# /etc/init.d/mysqld status
 SUCCESS! MySQL running (1509)

  添加環境變數

echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
tail -1 /etc/profile
source /etc/profile
echo $PATH

修改mysql密碼

[root@db13 tools]# mysqladmin -uroot -p password 123456
Enter password: 【輸入初始化時生成的密碼】
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

第2章 Mysql體繫結構與基本管理

2.1 客戶端與伺服器端模型

2.1.1 mysql服務結構

mysql是一個典型的c/s模式,服務端與客戶端兩部分組成

        服務端程式 mysqld
        客戶端程式 mysql自帶客戶端(mysql、mysqladmin、mysqldump等)
                  第三方客戶端  API介面(php-mysql)

 

2.1.2 mysql連接方式

TCP/IP 連接   網路連接串(通過用戶名 密碼 IP 埠進行連接)

mysql -uroot -p123 -h 127.0.0.1 -P 3306

 

socket 連接   網路套接字(用戶名 密碼  socket文件)

mysql -uroot -p123 -S /application/mysql/tmp/mysql.sock 

 

在linux中使用mysql命令不加其他的參數連接方式即

mysql -uroot -poldboy123使用的是套接字文件方式登錄的

2.1.3 MySQL在啟動過程

  啟動後臺守護進程,並生成工作線程

  預分配記憶體結構供MySQL處理數據使用

  實例就是MySQL的後臺進程+線程+預分配的記憶體結構

2.2 Mysqld服務的構成

 

2.2.1 連接層

 

  通訊協議為:tcp/ip 或 socket

  連接線程 為連接的數量

  用戶驗證 為通過用戶名 密碼驗證進行通訊協議

2.2.2 SQL層

 

  sql即結構化的查詢語句(資料庫內部邏輯語言)sql92 sql99

      DDL 資料庫定義語言

      DCL 資料庫控制語言

      DML 資料庫操作語言

      DQL 數據查詢語言

SQL層的功能: select * from wordpress.user;

1、判斷語法、語句、語義
    判斷語句類型 
2、資料庫不能直接響應sql語句
    必須明確的知道數據在哪個磁碟  
3、資料庫對象授權情況判斷
    授權失敗不繼續
4、解析(解析器)
    將sql語句解析成執行計劃,運行執行計劃,生成找數據的方式
5、優化 (優化器)
    運行執行計劃
   5.6之後 基於代價的演算法,從執行計劃中選擇代價最小的交給"執行器"
6"執行器"
    運行執行計劃 
    最終生產如何去磁碟找數據方式
7、將取數據的方式,交由下層(存儲引擎層)進行處理

8、最終將取出的數據抽象成管理員或用戶能看懂的方式(表),展現在用戶面前

9、查詢緩存: 緩存之前查詢的數據。
    假如我們查詢的表是一個經常有變動的表,查詢緩存不要設置太大  

  SQL層處理流程

 

2.2.3 存儲引擎層

  由上層決定存儲方式

    存儲引擎是充當不同表類型的處理程式的伺服器組件。

 

  存儲引擎層功能:

    存數據、取數據

    數據的不同存儲方式

     不同的管理方式:

            事務(增、刪、改)

            備份恢復       

            高級功能(高可用的架構、讀寫分離架構)

2.2.4 依賴於存儲引擎的功能

存儲引擎是充當不同表類型的處理程式的伺服器組件。

存儲引擎用於:

存儲數據、檢索數據、通過索引查找數據
        存儲介質、  事務功能、  鎖定、備份和恢復、優化

  特殊功能:

全文搜索、引用完整性、空間數據處理    

  雙層處理

上層包括SQL解析器和優化器、下層包含一組存儲引擎

  SQL 層不依賴於存儲引擎:

引擎不影響SQL處理

2.2.5 mysql 的邏輯構成(資料庫內部結構)

  邏輯構成是為了用戶能夠讀懂數據出現的,讓你更好的理解數據。

  管理數據的一種方式。

對象:
            庫中包含表,在linux中以目錄表示
            表中有列結構與行記錄,在linux中以多個文件表示
                行記錄
                列結構

  切換庫

mysql> use mysql;

  查看表

mysql> show tables;

  查看列的信息(記錄)

mysql> desc user;

2.2.6 mysql的存儲方式

         程式文件隨數據目錄一起存儲在伺服器安裝目錄下。執行各種客戶機程式、管理程式和實用程式時將創建程式可執行文件和日誌文件。首要使用磁碟空間的是數據目錄。

伺服器日誌文件和狀態文件:

  包含有關伺服器處理的語句的信息。日誌可用於進行故障排除、監視、複製和恢復。

  InnoDB 日誌文件(適用於所有資料庫)駐留在數據目錄級別。

  InnoDB 系統表空間:  包含數據字典、撤消日誌和緩衝區。

         每個資料庫在數據目錄下均具有單一目錄(無論在資料庫中創建何種類型的表)。資料庫目錄存儲以下內容:

數據文件:
     特定於存儲引擎的數據文件。這些文件也可能包含元數據或索引信息,具體取決於所使用的存儲引擎。
格式文件 (.frm):
   包含每個表和/或視圖結構的說明,位於相應的資料庫目錄中。
觸發器:
     與某個表關聯併在該表發生特定事件時激活的命名資料庫對象。

  數據目錄的位置取決於配置、操作系統、安裝包和分發。典型位置是 /var/lib/mysql。

  MySQL 在磁碟上存儲系統資料庫 (mysql)。

  mysql 包含諸如用戶、特權、插件、幫助列表、事件、時區實現和存儲常式之類的信息。

2.2.7 MySQL體繫結構小結

sql 優化相關的理念

           解析器 : 執行計劃  資料庫執行sql的一種方式 

           優化器 : 知道基本規則,直接影響將來選擇哪個執行計劃

           查詢緩存 : 生產環境中,一般會用redis memcached 來代替

邏輯結構

  庫    就是一個目錄,為了存放多張表

  表    在相應的庫中,用多個文件來表示

                    myisam表 3個文件:(.myd數據文件  .myi索引文件 frm表 結構定義文件)

                    innodb:  2個或者一個,共用表空間(ibdata1 基表 元數據)、獨立表空間(5.6以後預設的表存儲方式)

如何使用磁碟

         1、多個庫多個目錄,目錄下存放了多個表的存儲文件

         2、  auto.cnf           db02.err           db02.pid           ibdata1             ib_logfile0       ib_logfile1                等

2.3 MySQL管理

2.3.1 連接管理:mysql

[root@db02 ~]# mysql --help
-u <user_name> 或 --host=<user_name>
-p<password>
-h <host_name> 或 --host=<host_name>
--protocol=<protocol_name> 
-P <port_number> 或 --port=<port_number> 
-S <socket_name> 或 --socket=<socket_name>

常用的連接方式:

套接字:  mysql -uroot -p123  -S /application/mysql/tmp/mysql.sock
Tcp/Ip: mysql -uroot -p123 -h 10.0.0.52 -P 3306

2.3.2 資料庫的啟動流程

 

  mysqld 文件屬性

[root@db02 ~]# cd /application/mysql/bin/
[root@db02 bin]# file mysqld
mysqld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

mysql.server文件屬性

[root@db02 bin]# file ../support-files/mysql.server 
../support-files/mysql.server: POSIX shell script text executable

mysqld_safe文件屬性

[root@db02 data]# file /application/mysql/bin/mysqld_safe 
/application/mysql/bin/mysqld_safe: POSIX shell script text executable

可以看出mysql.server文件與mysqld_safe文件都是腳本文件,最後都調用mysqld二進位文件進行啟動。

2.3.3 mysql的關閉方法

  推薦使用的方法:

1、mysqladmin -uroot -p123 shutdown
2、servive mysqld stop

  儘量避免使用kill命令

    mysqladmin命令關閉mysql

[root@db02 bin]# mysqladmin shutdown -uroot -p123
Warning: Using a password on the command line interface can be insecure.

  perror命令

[root@db02 bin]# perror 13
OS error code  13:  Permission denied

         perror命令是mysql自帶命令,能夠查詢mysql錯誤代碼的含義。

2.3.4 my.cnf 配置文件說明

功能

    1、影響到伺服器進程的啟動

    2、影響到客戶端程式

配置my.cnf

                  使用不同的"標簽"去明確指定影響哪部分功能

                  伺服器端

[server]
    [mysqld] -----> 一般設置此項
    [mysqld_safe]
[client]     ----> 為了方便設置此項
    [mysql] 
    [mysqladmin]
    [mysqldump]

  my.cnf文件配置實例

[root@db02 data]# cat /etc/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql.log
port=3307
[mysql]
socket=/tmp/mysql.sock
user=root
password=123

檢查進程信息,可以看到與my.cnf配置的相同

[root@db02 data]# ps -ef |grep [my]sql 
root       3411   1918  0 15:52 pts/1    00:00:00 /bin/sh /application/mysql/bin/mysqld_safe
mysql      3548   3411  0 15:52 pts/1    00:00:00 /application/mysql/bin/mysqld --basedir=/application/mysql --datadir=/application/mysql/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --log-error=/var/log/mysql.log --pid-file=/application/mysql/data/db02.pid --socket=/tmp/mysql.sock --port=3307

my.cnf文件的配置

 

2.3.5 配置文件的讀取過程

/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf --> defaults-extra-file=/tmp/clsn.txt --> ~/.my.cnf

  註:假設4個配置文件都存在,同時使用--defaults-extra-file指定了參數文件,如果這時有一個 "參數變數"在5個配置文件中都出現了,那麼後面的配置文件中的參數變數值會覆蓋前面配置文件中的參數變數值,就是說會使用 ~/.my.cnf 中設置的值

  如果使用./bin/mysqld_safe 守護進程啟動mysql資料庫時,使用了 --defaults-file=<配置文件的絕對路徑>參數,這時只會使用這個參數指定的配置文件。

2.4 mysql多實例配置

2.4.1 什麼是MySQL多實例?

 

  簡單地說,MySQL多實例就是在一臺伺服器上同時開啟多個不同的服務埠(如:3306/3307)同時運行多個MySQL服務進程,這些服務進程通過不同的socket監聽不同的服務埠來提供服務。

  這些MySQL多實例共用一套MySQL安裝程式,使用不同的my.cnf(也可以相同)配置文件、啟動程式(也可以相同)和數據文件。在提供服務時,多實例MySQL在邏輯上看來是各自獨立的,他們根據配置文件對應設定值,獲得伺服器響應數量的資源。

2.4.2 MySQL多實例的作用與問題

有效利用伺服器資源

  當單個伺服器資源有剩餘時,可以充分利用剩餘的資源提供更多的服務,且可以實現資源的邏輯隔離

節約伺服器資源

  當公司資金緊張,但是資料庫又需要各自儘量獨立地提供服務,而且,需要主從複製等技術時,多實例就再好不過了

  MySQL多實例有它的好處,但也有弊端,比如,會存在資源互相搶占的問題。當某個資料庫實例併發很高或者有SQL慢查詢時,整個實例會消耗大量的系統CPU、磁碟I/O等資源,導致伺服器上的其他資料庫實例提供服務的質量一起下降。

2.4.3 多實例配置思路

1     多套配置文件
2     多套 數據
3     多個socket
4     多個埠
5     多個日誌文件
6     多個啟動程式

2.4.4 多實例配置過程

      前期mysql的安裝與1.4MySQL的安裝一致,在這裡就不再重覆(配置完成不要啟動)

第一個裡程碑:多實例配置文件準備

[root@db02 /]# tree /data/
/data/
├── 3306
│   ├── my.cnf
│   └── mysql
└── 3307
    ├── my.cnf
    └── mysql

3306埠my.cnf配置文件

[root@db02 /]# cat data/3306/my.cnf 
[client]
port            = 3306
socket          = /data/3306/mysql.sock

[mysqld]
user    = mysql
port    = 3306
socket  = /data/3306/mysql.sock
basedir = /application/mysql
datadir = /data/3306/data
log-bin = /data/3306/mysql-bin
server-id = 6

[mysqld_safe]
log-error=/data/3306/mysql_3306.err
pid-file=/data/3306/mysqld.pid

3307埠my.cnf配置文件

[root@db02 /]# cat  /data/3307/my.cnf 
[client]
port            = 3307
socket          = /data/3307/mysql.sock

[mysqld]
user    = mysql
port    = 3307
socket  = /data/3307/mysql.sock
basedir = /application/mysql
datadir = /data/3307/data
log-bin = /data/3307/mysql-bin
server-id = 7

[mysqld_safe]
log-error=/data/3307/mysql_3307.err
pid-file=/data/3307/mysqld.pid

編寫管理腳本3306

 1 [root@db02 /]# cat data/3306/mysql 
 2 #!/bin/sh
 3 #3306 start scripts
 4 #init
 5 port=3306
 6 mysql_user="root"
 7 CmdPath="/application/mysql/bin"
 8 mysql_sock="/data/${port}/mysql.sock"
 9 mysqld_pid_file_path=/data/3306/3306.pid
10 start(){
11     if [ ! -e "$mysql_sock" ];then
12          printf "Starting MySQL...\n"
13         /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &
14         sleep 3
15     else
16         printf "MySQL is running...\n"
17         exit 1
18     fi
19 }
20 stop(){
21     if [ ! -e "$mysql_sock" ];then
22         printf "MySQL is stopped...\n"
23         exit 1
24     else
25         printf "Stoping MySQL...\n"
26         mysqld_pid=`cat "$mysqld_pid_file_path"`
27          if (kill -0 $mysqld_pid 2>/dev/null)
28            then
29              kill $mysqld_pid
30              sleep 2
31          fi
32     fi
33 }
34 
35 restart(){
36     printf "Restarting MySQL...\n"
37     stop
38     sleep 2
39     start
40 }
41 
42 case "$1" in
43     start)
44         start
45     ;;
46     stop)
47         stop
48     ;;
49     restart)
50         restart
51     ;;
52     *)
53         printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
54 esac
View Code mysql 多實例 啟動腳本

編寫管理腳本3307

 1 [root@db02 /]# cat data/3307/mysql 
 2 #!/bin/sh
 3 #3307 start scripts
 4 #init
 5 port=3307
 6 mysql_user="root"
 7 CmdPath="/application/mysql/bin"
 8 mysql_sock="/data/${port}/mysql.sock"
 9 mysqld_pid_file_path=/data/3307/3307.pid
10 start(){
11     if [ ! -e "$mysql_sock" ];then
12          printf "Starting MySQL...\n"
13         /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &
14         sleep 3
15     else
16         printf "MySQL is running...\n"
17         exit 1
18     fi
19 }
20 stop(){
21     if [ ! -e "$mysql_sock" ];then
22         printf "MySQL is stopped...\n"
23         exit 1
24     else
25         printf "Stoping MySQL...\n"
26         mysqld_pid=`cat "$mysqld_pid_file_path"`
27          if (kill -0 $mysqld_pid 2>/dev/null)
28            then
29              kill $mysqld_pid
30              sleep 2
31          fi
32     fi
33 }
34 
35 restart(){
36     printf "Restarting MySQL...\n"
37     stop
38     sleep 2
39     start
40 }
41 
42 case "	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、解壓文件到當前目錄 命令:tar -zxvf mysql....tar.gz 二、移動解壓完成的文件夾到目標目錄並更名mysql 命令:mv mysql-版本號 /usr/local/mysql 添加系統mysql組和mysql用戶 添加系統mysql組 sudo groupadd mysql ...
  • 花了3個晚上,把這個章節看完,受益匪淺。 1. 最有用的應該是與中斷相關的錯誤,優先排查中斷優先順序設置。 2. 堆棧溢出檢查,可能用到,一般先把堆棧設置的足夠大,只要沒有溢出就是好事,溢出了,掌握了棧溢出鉤子函數排錯很方便。 3. 相關的問題應該儘量不會出現,畢竟只要需要列印調試信息的情況下才使用, ...
  • 1.mongodb下載地址https://www.mongodb.com/download-center#community 2.安裝 3.在D:\MongoDB目錄下創建db和log兩個文件夾,並創建環境變數,如下圖所 4.以超級管理員的身份打開cmd,以auth的方式註冊服務sc create ...
  • 我們知道Redis支持五種數據類型, 分別是字元串、哈希表(map)、列表(list)、集合(set)和有序集合,和Java的集合框架類似,不同數據類型的數據結構實也是不一樣的。 1.Redis中的redisObject對象 Redis是使用C編寫的,內部實現了一個struct結構體redisObj ...
  • 由於資料庫伺服器崩潰,造成了無法進入系統進行資料庫備份,只能把oracle相關文件拷貝出來。對於拷貝出來的文件在測試機上進行一次不完全恢復,具體流程如下所示: 1、安裝oracle 10g服務端並創建一個與要進行恢復的資料庫相同名稱的實例(db_name,sid,字元集一樣,因為在創建控制文件時,會 ...
  • 簡介 資料庫快照,正如其名稱所示那樣,是資料庫在某一時間點的視圖。快照設計最開始的目的是為了報表服務。比如我需要出2011的資產負債表,這需要數據保持在2011年12月31日零點時的狀態,則利用快照可以實現這一點。快照還可以和鏡像結合來達到讀寫分離的目的。下麵我們來看什麼是快照。 什麼是快照 資料庫 ...
  • Oracle 9i 開始支持閃回,Oracle10g開始全面支持閃回功能,Oracle11g有所完善,為大家快速的恢複數據,查詢歷史數據提供了很大的便捷方法。 本文主要對Oracle常用閃回使用做些詳細介紹,其中對於不常用的事務和版本閃回,這裡就不做介紹 一、Oracle閃回概述 二、Oracle閃 ...
  • 引言 在上一篇中 "大數據學習系列之二 HBase環境搭建(單機)" 中,成功搭建了Hadoop+HBase的環境,本文則主要講述使用Java 對HBase的一些操作。 一、事前準備 1.確認hadoop和hbase成功啟動 2.確認防火牆是否關閉 3.maven所需要的依賴架包 4.修改hosts ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...