❶ 如何源碼安裝mysql
方法/步驟
1
[root@localhost soft]# groupadd mysql 添加mysql標准組
[root@localhost soft]# useradd -g mysql mysql 添加mysql用戶並加到mysql組中
2
安裝mysql
[root@localhost soft]# tar -zxvf mysql-5.5.45.tar.gz
[root@localhost mysql-5.5.46]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
# -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安裝路徑
# -DMYSQL_DATADIR=/usr/local/mysql/data \ #數據文件存放位置
# -DSYSCONFDIR=/etc \ #my.cnf路徑
# -DWITH_MYISAM_STORAGE_ENGINE=1 \ #支持MyIASM引擎
# -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #支持InnoDB引擎
# -DWITH_MEMORY_STORAGE_ENGINE=1 \ #支持Memory引擎
# -DWITH_READLINE=1 \ #快捷鍵功能(我沒用過)
# -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \ #連接資料庫socket路徑
# -DMYSQL_TCP_PORT=3306 \ #埠
# -DENABLED_LOCAL_INFILE=1 \ #允許從本地導入數據
# -DWITH_PARTITION_STORAGE_ENGINE=1 \ #安裝支持資料庫分區
# -DEXTRA_CHARSETS=all \ #安裝所有的字元集
# -DDEFAULT_CHARSET=utf8 \ #默認字元
# -DDEFAULT_COLLATION=utf8_general_ci \ #校驗字元
3
修改目錄所有者和所有組
[root@end mysql]# chown -R mysql:mysql .
4
初始化資料庫
[root@end mysql]# scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/
5
復制mysql服務啟動配置文件(注意:在CentOS 6.4版操作系統的最小安裝完成後,在/etc目錄下會存在一個my.cnf,需要將此文件更名為其他的名字,如:/etc/my.cnf.bak,否則,該文件會干擾源碼安裝的MySQL的正確配置,造成無法啟動。)
[root@end mysql]# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
注冊為服務
[root@end mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
讓chkconfig管理mysql服務
[root@end mysql]# chkconfig --add mysqld[root@end mysql]# chkconfig mysqld on
設置環境變數
在文件/etc/profile末尾添加
PATH=/usr/local/mysql/bin:$PATH
立即生效
[root@end mysql]# source /etc/profile
啟動mysql服務
[root@end mysql]# service mysqld startStarting MySQL...
檢查mysql服務是否啟動
[root@end mysql]# netstat -tulnp |grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 24351/mysqld
修改mysql用戶root密碼
[root@end mysql]# mysql -uroot 登錄到mysql,首次登陸無密碼
設置mysql密碼
mysql> SET PASSWORD = PASSWORD('endmoon');
Query OK, 0 rows affected (0.00 sec)
用設置的密碼登錄
[root@end mysql]# mysql -u root -pEnter password: endmoon
若要設置root用戶可以遠程訪問,執行
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.20' IDENTIFIED BY 'password' WITH GRANT OPTION;Query OK, 0 rows affected (0.00 sec)
配置防火牆
防火牆的3306埠默認沒有開啟,若要遠程訪問,需要開啟這個埠
打開/etc/sysconfig/iptables,在-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT後面添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
[root@end mysql]# service iptables restart
使更改的防火牆配置生效 iptables:將鏈設置為政策 ACCEPT:filter [確定]
iptables:清除防火牆規則: [確定]
iptables:正在卸載模塊: [確定]
iptables:應用防火牆規則:
mysql資料庫的安裝到這里就結束了
❷ 知乎上有哪些比較活躍的資料庫領域大牛
阿里雲資料庫團隊比較熟,隨手梳理了以下
丁奇:MySQL社區核心成員。專注於數據存儲系統、MySQL 源碼研究和改進、MySQL 性能優化和功能改進。
子嘉:Redis中國用戶會發起人,Redis技術大學校長
葉翔:MongoDB江浙地區用戶會主席
在此之前也是淘寶Tair分布式KV系統的技術負責人,負責過阿里雲Memcache,Redis服務等,在阿里集團工作8年,一直在做NoSQL相關的技術。
德歌:阿里雲 PostgreSQL技術負責人,PostgreSQL中國技術大學校長、GreenPlum源碼深度研究者
彭立勛:參與了ACMUG(MySQL中國用戶組)的發起和組建,擔任副主席和杭州地區的組織者。MariaDB基金會唯一的中國成員
蕭少聰:PostgreSQL 中國社區主席
❸ mysql源碼怎麼調用引擎
mysql源碼調用引擎步驟:
1、打開mysql的命令行。
2、輸入資料庫密碼。
3、查詢默認資料庫引擎。
4、默認的引擎是InnoDB,修改即可。
❹ 怎麼樣使用CLion調試分析MySQL Server
由於在寫MySQL日誌訂閱服務時候,需要確定在什麼event之後保存position,所以就開始研究MySQL的源碼,剛開始採用最原始的列印輸出的方式去調試,然後每次改完編譯運行,效率好低,讓我很絕望,然後我花了些時間研究下怎麼使用CLion Debug MySQL。
獲取源碼
git clone https://github.com/mysql/mysql-server
編譯安裝初始化資料庫
cd mysql-server
cmake \
-DCMAKE_INSTALL_PREFIX=/path/mysql/install \
-DMYSQL_DATADIR=/path/mysql/data \
-DSYSCONFDIR=/path/mysql/etc \
-DMYSQL_UNIX_ADDR=/path/mysql/mysql.sock \
-DWITH_DEBUG=1 \
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/path/mysql-server/ -DDOWNLOAD_BOOST_TIMEOUT=60000
make -j 4
make install -j 4
mysqld --initialize-insecure --user=root --datadir=/path/mysql/data
啟動MySQL,測試下是否安裝成功
/path/install/bin/mysqld --defaults-file=/path/mysql/etc/my.cnf
使用CLion新建工程並打開源碼目錄之後,設置CLion
CMake Options和你編譯安裝時的選項一致
-DCMAKE_INSTALL_PREFIX=/path/mysql/install
-DMYSQL_DATADIR=/path/mysql/data
-DSYSCONFDIR=/path/mysql/etc
-DMYSQL_UNIX_ADDR=/path/mysql/mysql.sock
-DWITH_DEBUG=1
然後在CLion里,Reload CMake Project
在Run/Debug列表裡就可以看到很多選項了
找到mysqld配置下啟動參數
mysqld --defaults-file=/path/mysql/etc/my.cnf
然後以Debug模式啟動,看下成功的效果
❺ MySQL與Redis資料庫連接池介紹(圖示+源碼+代碼演示)
資料庫連接池(Connection pooling)是程序啟動時建立足夠的資料庫連接,並將這些連接組成一個連接池,由程序動態地對池中的連接進行申請,使用,釋放。
簡單的說:創建資料庫連接是一個很耗時的操作,也容易對資料庫造成安全隱患。所以,在程序初始化的時候,集中創建多個資料庫連接,並把他們集中管理,供程序使用,可以保證較快的資料庫讀寫速度,還更加安全可靠。
不使用資料庫連接池
如果不使用資料庫連接池,對於每一次SQL操作,都要走一遍下面完整的流程:
1.TCP建立連接的三次握手(客戶端與 MySQL伺服器的連接基於TCP協議)
2.MySQL認證的三次我收
3.真正的SQL執行
4.MySQL的關閉
5.TCP的四次握手關閉
可以看出來,為了執行一條SQL,需要進行大量的初始化與關閉操作
使用資料庫連接池
如果使用資料庫連接池,那麼會 事先申請(初始化)好 相關的資料庫連接,然後在之後的SQL操作中會復用這些資料庫連接,操作結束之後資料庫也不會斷開連接,而是將資料庫對象放回到資料庫連接池中
資源重用:由於資料庫連接得到重用,避免了頻繁的創建、釋放連接引起的性能開銷,在減少系統消耗的基礎上,另一方面也增進了系統運行環境的平穩性(減少內存碎片以及資料庫臨時進程/線程的數量)。
更快的系統響應速度:資料庫連接池在初始化過程中,往往已經創建了若干資料庫連接置於池中備用。 此時連接的初始化工作均已完成。對於業務請求處理而言,直接利用現有可用連接,避免了從資料庫連接初始化和釋放過程的開銷,從而縮減了系統整體響應時間。
統一的連接管理,避免資料庫連接泄露:在較為完備的資料庫連接池實現中,可根據預先的連接佔用超時設定,強制收回被佔用連接。從而避免了常規資料庫連接操作中可能出現的資源泄露。
如果說你的伺服器CPU是4核i7的,連接池大小應該為((4*2)+1)=9
相關視頻推薦
90分鍾搞懂資料庫連接池技術|linux後台開發
《tcp/ip詳解卷一》: 150行代碼拉開協議棧實現的篇章
學習地址:C/C++Linux伺服器開發/後台架構師【零聲教育】-學習視頻教程-騰訊課堂
需要C/C++ Linux伺服器架構師學習資料加qun 812855908 獲取(資料包括 C/C++,Linux,golang技術,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK,ffmpeg 等),免費分享
源碼下載
下載方式:https://github.com/dongyusheng/csdn-code/tree/master/db_pool(Github中下載)
db_pool目錄下有兩個目錄,mysql_pool目錄為MySQL連接池代碼,redis_pool為redis連接池代碼
下面介紹mysql_pool
CDBConn解析
概念: 代表一個數據連接對象實例
相關成員:
m_pDBPool:該資料庫連接對象所屬的資料庫連接池
構造函數: 綁定自己所屬於哪個資料庫連接池
Init()函數: 創建資料庫連接句柄
CDBPool解析
概念:代表一個資料庫連接池
相關成員:
Init()函數:常見指定數量的資料庫實例句柄,然後添加到m_free_list中,供後面使用
GetDBConn()函數: 用於從空閑隊列中返回可以使用的資料庫連接句柄
RelDBConn()函數: 程序使用完該資料庫句柄之後,將句柄放回到空閑隊列中
測試之前,將代碼中的資料庫地址、埠、賬號密碼等改為自己的(代碼中有好幾處)
進入MySQL, 創建mysql_pool_test資料庫
進入到mysql_pool目錄下, 創建一個build目錄並進入 :
然後輸入如下的命令進行編譯
之後就會在目錄下生成如下的可執行文件
輸入如下兩條命令進行測試: 可以看到不使用資料庫連接池,整個操作耗時4秒左右;使用連接池之後,整個操作耗時2秒左右,提升了一倍
源碼下載
下面介紹redis_pool
測試
進入到redis_pool目錄下, 創建一個build目錄並進入 :
然後輸入如下的命令進行編譯
之後就會在目錄下生成如下的可執行文件
輸入如下的命令進行測試: 可以看到不使用資料庫連接池,整個操作耗時182ms;使用連接池之後,整個操作耗時21ms,提升了很多
進入redis,可以看到我們新建的key:
❻ mysql的源代碼是公開的嗎
開發 mysql 的人真是大公無私,這么好的軟體不但免費,而且居然願意把源碼向世人公開,向他們致敬。不過現在被 oracle 拿去了,不知道會不會被使壞。