Linux MYSQL 数据库
Linux MYSQL? 數據庫
1.1.概述:
DBMS
?datebase management system? 數據庫管理系統
?
DML:date manapulate lanaguage? 數據操作語言
??
???INSERT,REPLACE,UPDATE,DELETE
?
DLL: Date Defination Lanauage 數據定義語言
??
???CREATE,創建數據庫 ALTER,修改數據庫 DROP 刪除數據庫和表
?
DCL:Date Control Language 數據控制語言
?
常用數據庫軟件
Oracle?? 世界三大
Sybase
Infomix
SQL Server???? sybase和micrsoft共同開發
MySQL
PostgreSQL
pgsql
EnterpriseDB?? redhat注資
?
?MySQL,SQL?瑞典?? MySQL AB 作者女兒名字命名?
??
MYSQL事務工作原理:
可以能保證你做的一系列動作,要么全部成功。如果有一個操作失敗,就回退到修改前。?
比如你要做下面幾個操作:
1.刪除表A中的某些記錄;
2.向B添加一些記錄;
3.修改C表中的一些數據;
-------------------------
使用事務,如果1,2都成功了,3卻失敗了。
就會回退到第1步執行前的樣子,ABC表都沒被修改。???
?
1.2.索引
?
表索引:相當于一個表的目錄 可以加快速度訪問
1)??? 普通索引
2)??? 唯一索引
3)??? 主索引
4)??? 外鍵索引
5)??? 復合索引
?
# 數據庫文件路徑
mysql> show variables link '%datadir%';
?
1.3.mysql安裝
?
1.3.1.mysql源碼安裝
?
wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.63.tar.gz
tar xzf mysql-5.1.63.tar.gz ;cd mysql-5.1.63
./configure --prefix=/usr/local/mysql? --enable-assembler?&& make -j8 &&? make -j8 install
?
--enable-assembler????? # 使用某些字符串的匯編器版本
?
安裝報錯: checkingfor termcap functions library... configure: error: No curses/termcap libraryfound
解決方法: yum?install?ncurses-devel??-y
?
1. 設置服務
配置MYSQL服務為系統服務
cp/usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
cp/usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
2. 設置開機啟動
chkconfig --add mysqld????????????? # 增加服務
chkconfig --level 345 mysqld on?????? # 增加開機項
3. 建立系統賬號
useradd mysql
4. 過入mysql安裝目錄
cd /usr/local/mysql
chown -R mysql.mysql/usr/local/mysql ???# 將安裝目錄所有者權限設為mysql用戶
/usr/local/mysql/bin/mysql_install_db--user=mysql --datadir=/usr/local/mysql/var --basedir=/usr/local/mysql? ?# 初始化數據庫??? --datadir=指定數據目錄?? --basedir=指定數據基礎目錄
chown -R mysql.mysql var???? # 修改var所有者
/usr/local/mysql/bin/mysqld_safe --user=mysql &??? # 服務后臺啟動
?
5.5以上版本安裝方式:
?
rm -rf /data/mysql/*
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql--user=mysql
bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
?
安裝依賴:yum -yinstall gcc-c++ cmake ncurses-devel
?
useradd mysql
?
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
?
cmake .-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0
?
&& make && make install
?
初始化
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysql --datadir=/data/mysql
?
添加服務
cp ./support-files/mysql.server/etc/rc.d/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig mysqld on
?
修改啟動服務
vi /etc/rc.d/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql
:wq!
?
修改配置文件
vim /etc/my.cnf
datadir=/data/mysql
:wq
?
service mysqld start
?
添加環境變量
vi /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
:wq!
?
添加sock
source /etc/profile
ln -s /var/lib/mysql/mysql.sock /tmp/
?
安裝報錯:
?Curses library not found.? Please install appropriate package,
?
按照錯誤提示,Debian/Ubuntu下需要安裝libncurses5-dev;Redhat下需要安裝ncurses-devel ,檢查是否安裝了ncurses包,如下所示,已經安裝了ncurses-5.5-24.20060715,但是缺少ncurses-devel包。
?
yum install ncurses-devel -y
?
安裝了ncurses-devel包后,刪除CMakeCache.txt,然后重新編譯,編譯成功,問題解決!
?
預編譯:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql/-DMYSQL_DATADIR=/home/mysql/data/ -DEFAULT_CHARSET=utf8 -DMYSQL_TCP_PORT=3306-DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DWITH_DEBUG=0 -DWITH_INNOBASE_STORAGE_ENGINE=1-DMYSQL_USER=mysql
make && make install
?
這些參數的意思:
-DCMAKE_INSTALL_PREFIX=/data/mysql 準備安裝到那里
-DEFAULT_CHARSET=utf8 默認的字符集
-DMYSQL_TCP_PORT=3306 數據庫的監聽端口
-DMYSQL_UNIX_ADDR=/tmp/mysql3306.sock 本機連回數據庫的unix socket
-DWITH_DEBUG=0 關閉debug模式
-DWITH_INNOBASE_STORAGE_ENGINE=1 打開innodb引擎
?
項目刪除:CMake 默認不提供uninstall 這個 target,想要的話,輸入:
xargs rm < install_manifest.txt
?
1.3.2.Yum安裝
yum? install -y? mysql mysql-devel mysql-server mysql-libs
?
安裝依賴包
-----------------------------------------------------------------------------------------------------------------------------
Installing:
?mysql-server???????? i686???? 5.1.73-5.el6_7.1????? updates??????? 8.8 M
Installing for dependencies:
?mysql?????????????? i686???? 5.1.73-5.el6_7.1?????? updates??????? 904 k
?perl-DBD-MySQL???? i686??????4.013-3.el6????????? base????????? 134 k
?perl-DBI???????????? i686???????? 1.609-4.el6???????? base???????? 705 k
Updating for dependencies:
?mysql-libs???????????? i686????? 5.1.73-5.el6_7.1?????? updates?????? 1.2 M
---------------------------------------------------------------------------------------------------------------------------------
?
二進制程序:mysql? mysqld?可執行程序
?
RDBMS:
?/var/lib/mysql/???? 數據庫默認路徑
?
yum install mysql-server -y
?
初始化mysql: 首次安裝會自動初始化
?
1.4.服務與端口
?
service mysql? restart
service mysqld? restart
# 重啟和停止服務
/etc/init.d/mysqld stop
?
端口tcp:3306
?
/usr/local/mysql/share/mysql.server stop –socket=/var/lib/mysql/mysql.sock&? 啟動后臺服務
?
/usr/loacl/mysql/bin/mysql/mysql.serverstop?? 停止源碼mysql服務
?
1.5.配置文件 /etc/my.conf
[mysqld]? ??????????????????????????????????????// 服務器端配置
?datadir=/data/mysql ??????????????????????????// 數據目錄
?socket=/var/lib/mysql/mysql.sock //socket???????? // 通信設置?
?user=mysql ??????????????????????????????????????// 使用mysql用戶啟動
symbolic-links=0? ????????????????????????????????// 是否支持快捷方式
?log-bin=mysql-bin ???????????????????????????????// 開啟bin-log日志
?server-id = 1?????????????????????????????????????// mysql服務ID
?auto_increment_offset=1? ????????????????????????// 1~65535?自增長字段
?auto_increment_increment=2????????????????????? // 1~65535 自增長字段每次遞增的量 默認為1
(mysql中有自增長字段,在做數據庫的主主同步時需要設置自增長的兩個相關配置:
在主主同步配置時,需要將兩臺服務器的auto_increment_increment增長量都配置為2,而要把auto_increment_offset分別配置為1和2,這樣才可以避免兩臺服務器同時做更新時自增長字段的值之間發生沖突。)
?[mysqld_safe] ?????????????????????????????????????// mysql服務安全啟動配置
?log-error=/var/log/mysqld.log?
?pid-file=/var/run/mysqld/mysqld.pid??
?replicate-do-db =jfedu ????????????????????????????// 允許slave同步哪個庫
?key_buffer_size=16M ????????????????指定索引緩沖區的大小,它決定索引處理的速度,尤其是索引讀的速度。一般為內存的50% show variables like ‘key_buffer_size‘;查詢緩沖大小
max_connections = 3000??????????????# 每個客戶端連接最大的錯誤允許數量,如果達到了此限制,這個客戶端將會被MySQL服務阻止直到執行了”FLUSH? HOSTS”或者服務重啟.
innodb_buffer_pool_size=??????????? 對于InnoDB表來說,innodb_buffer_pool_size的作用就相當于key_buffer_size對于MyISAM表的作用一樣。InnoDB使用該參數指定大小的內存來緩沖數據和索引。
對于單獨的MySQL數據庫服務器,最大可以把該值設置成物理內存的80%。
內存32G,24G
根據MySQL手冊,對于2G內存的機器,推薦值是1G(50%)。
basedir????? =path?? ???????# 使用給定目錄作為根目錄(安裝目錄)。
datadir????? =path ?????????#從給定目錄讀取數據庫文件。
pid-file???? = filename????? # 為mysqld程序指定一個存放進程ID的文件(僅適用于UNIX/Linux系統);
[mysqld]???????????????????????
socket = /tmp/mysql.sock???? # 為MySQL客戶程序與服務器之間的本地通信指定一個套接字文件(Linux下默認是/var/lib/mysql/mysql.sock文件)
port???????????? = 3306????? # 指定MsSQL偵聽的端口
key_buffer?????? = 384M????? # key_buffer是用于索引塊的緩沖區大小,增加它可得到更好處理的索引(對所有讀和多重寫)。索引塊是緩沖的并且被所有的線程共享,key_buffer的大小視內存大小而定。
table_cache????? = 512?????? # 為所有線程打開表的數量。增加該值能增加mysqld要求的文件描述符的數量。可以避免頻繁的打開數據表產生的開銷
sort_buffer_size = 2M??????? # 每個需要進行排序的線程分配該大小的一個緩沖區。增加這值加速ORDER BY或GROUP BY操作。注意:該參數對應的分配內存是每連接獨占!如果有100個連接,那么實際分配的總共排序緩沖區大小為100×6=600MB
read_buffer_size = 2M??????? # 讀查詢操作所能使用的緩沖區大小。和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享。
query_cache_size = 32M?????? # 指定MySQL查詢結果緩沖區的大小
read_rnd_buffer_size??? = 8M # 改參數在使用行指針排序之后,隨機讀用的。
myisam_sort_buffer_size = 64M # MyISAM表發生變化時重新排序所需的緩沖
thread_concurrency????? = 8?# 最大并發線程數,取值為服務器邏輯CPU數量×2,如果CPU支持H.T超線程,再×2
thread_cache??????????? = 8?# #緩存可重用的線程數
skip-locking??????????? # 避免MySQL的外部鎖定,減少出錯幾率增強穩定性。
[mysqldump]
max_allowed_packet????? =16M # 服務器和客戶端之間最大能發送的可能信息包
?
1.6.客戶端連接
?
# 查詢當前連接進程
?
showprocesslist;
?
訪問mysql的命令格式:
mysql:
???-u? username????????? 默認? root
???-p??????????????????? 默認?空
-h? myser_server???? ??默認 loclhost本機??
?
示例:mysql -uroot -p -h 192.168.1.254
?
退出? \q
?
連接方式:
???linux? socket?? server和clinet在同一臺服務器
???windows? memory? 共享內存
??? 網絡端??TCP
?
mysql 客戶端:
?
???? 交互式模式
???? 批處理模式
?
交互式模式中的命令類別:
?????客戶端命令 : \h? 幫助菜單
?????服務器端命令??
?????????語句結束符: 默認為分號;
?
1.7.數據類型
?
關系數據庫對象:
?????庫
?????表
?????索引
?????視圖
?????鍵(約束)
?????存儲過程
?????存儲函數
?????觸發器
?????游標
?????用戶
?????權限
?????事務
?????
??? 表:
???????行row? 列 field ,column?
???????字段 數據類型? 類型修飾(限制)
?
數值類型
整數類型 ? ? ? ?字節 ? ? ? 范圍(有符號) ? ??范圍(無符號) ? ? ? ? ?用途?
TINYINT ? ? ? ?1字節 ? ? ??(-128,127) ? ? ? ? ?(0,255) ? ? ? ?小整數值?
SMALLINT ? ? ? 2字節 ? ? (-32 768,32 767) ? ? ? (0,65 535)? ? ? ?? 大整數值?
MEDIUMINT ? ? ?3字節 ? ?(-8 388608,8 388 607) (0,16 777 215)? ? ?大整數值?
INT或INTEGER ? 4字節 ? (-2147 483 648,2 147 483 647) (0,4294 967 295) 大整數值?
BIGINT ? ? ? ? 8字節 ? (-9 233 372 036854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 極大整數值?
FLOAT ? ? ? ? ?4字節 ? (-3.402 823 466E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823466 E+38) 單精度浮點數值?
DOUBLE ? ? ? ? 8字節 (1.797 693 134 862 3157 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 雙精度浮點數值?
DECIMAL 對DECIMAL(M,D) ,如果M>D,為M+2否則為D+2 依賴于M和D的值 依賴于M和D的值 小數值
?
字符串類型
字符串類型 ? ? 字節大小 ?? ? ? 描述及存儲需求
? ? CHAR ? ? ?? 0-255字節? ? ? ? ?定長字符串?
? ? VARCHAR ? ??0-255字節? ? ? ? ?變長字符串?
? ? TINYBLOB ? ? 0-255字節 ? ? ??不超過 255 個字符的二進制字符串?
? ? TINYTEXT ? ? 0-255字節 ? ? ??短文本字符串?
? ? BLOB ? ? ?? 0-65535字節? ? ?二進制形式的長文本數據?
? ? TEXT ? ? ?? 0-65535字節? ? ?長文本數據?
? ? MEDIUMBLOB ? 0-16 777215字節 二進制形式的中等長度文本數據?
? ? MEDIUMTEXT ? 0-16 777215字節 中等長度文本數據?
? ? LOGNGBLOB ? ?0-4294 967 295字節 二進制形式的極大文本數據?
? ? LONGTEXT ? ? 0-4294 967 295字節 極大文本數據
? ? VARBINARY(M) ? ?? ? ? ? ? ? ? 允許長度0-M個字節的定長字節符串,值的長度+1個字節
? ? BINARY(M) ? ?M? ? ? ? ? ? ? ? 允許長度0-M個字節的定長字節符串
?
日期和時間類型
類型 ? ? 大小(字節) ? ? 范圍 ? ? ?? ? ? ? 格式 ? ? ?? ?用途?
?DATE ? ? ? 4 ?? ? ?1000-01-01/9999-12-31 YYYY-MM-DD ? ?日期值?
?TIME ? ? ? 3 ?? ? ?'-838:59:59'/'838:59:59' HH:MM:SS ? ?時間值或持續時間?
?YEAR ? ? ? 1 ?? ? ? 1901/2155 ? ? ? ? ? ? ?YYYY ? ? ? 年份值?
?DATETIME ? 8 ? ?? 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和時間值?
?TIMESTAMP ?4 ? ?? 1970-01-01 00:00:00/2037 年某時 YYYYMMDD HHMMSS 混合日期和時間值,時間戳
?
1.8.Mysql 軟件管理
?
1.8.1.修改mysql字符集為UTF-8的方法:
show variables like "%char%"
?
在/etc/my.cnf對應如下配置段加入相應命令
[clinet]字段加入default-character-set=utf8?? 客戶端生效
[mysqld]字段加入character-set-server=utf8
[mysql]字段里加入default-character-set=utf8?? 本地生效
然后重啟mysql服務
?
1.8.2.Mysql常用的兩大引擎:MyISAM和InnoDB
?
MyISAM MySQL5.0 之前的默認數據庫引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務,支持表鎖不支持行鎖;
InnoDB事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定, MySQL 5.5 起成為默認數據庫引擎;
BDB源自 Berkeley DB,事務型數據庫的另一種選擇,支持Commit 和Rollback 等其他事務特性;
Memory所有數據置于內存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會占用和數據量成正比的內存空間。并且其內容會在 MySQL 重新啟動時丟失;
Mysql常用的兩大引擎有MyISAM和innoDB,那他們有什么明顯的區別呢,什么場合使用什么引擎呢?
MyISAM 類型的表強調的是性能,其執行數度比InnoDB類型更快,但不提供事務支持,如果執行大量的SELECT(查詢)操作,MyISAM是更好的選擇,支持表鎖。
InnoDB 提供事務支持事務,外部鍵等高級數據庫功能,執行大量的INSERT或UPDATE,出于性能方面的考慮,應該使用InnoDB表,支持行鎖。
?
表鎖和行鎖:表鎖,指當你插入數據時,其它命令不能插入和操作
??????????? 行鎖,如果要插入一行數據時,會鎖定當前行,其它行不影響
?
1.8.3.查看表使用的引擎:showcreate table test_t0;
?
? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,但不提供事務支持,如果執行大量的SELECT(查詢)操作,MyISAM是更好的選擇,支持表鎖。
InnoDB提供事務支持事務,外部鍵等高級數據庫功能,執行大量的INSERT或UPDATE,出于性能方面的考慮,應該使用InnoDB表,支持行鎖。
?
1.8.4.修改MySQL表空間引擎:
設置InnoDB為默認引擎:在配置文件my.cnf中的 [mysqld] 下面加入
default-storage-engine=INNODB 然后重啟mysqld服務即可。
?
修改表引擎方法如下:
altertable t1 engine=myisam;??
alter table t1?engine=innodb;??
?
如果添加innodb引擎報錯,需要執行如下命令:
刪除/mysql/data目錄下的ib_logfile0,ib_logfile1文件即可。
?
1.8.5.創建索引命令
Alter table用來創建普通索引、unique索引或primary key索引。(我這里以t1表為例來講解)
alter table t1 add index index_name (name)
alter table t1 add unique (name)
alter table t1 add primary key (name)
或者使用create創建
create index index_name on t1 (name)
create unique index index_name on t1 (name)
刪除索引
drop index index_name on talbe_name
alter table t1 drop index index_name
?
1.8.6.MySQL慢查詢
1)?查看當前mysql慢查詢狀態
show variables like "%slow%";
| log_slow_queries | OFF
| slow_launch_time | 2 | ?超過2秒定義為慢查詢。
| slow_query_log | OFF | ?慢查詢關閉狀態。
| slow_query_log_file |/data/mysql/var/db-Test2-slow.log | 慢查詢日志的文件。
?
2)?開啟慢查詢日志方法
臨時開啟:set globalslow_query_log=on;
永久開啟: 在my.cnf中添加,如下:
log-slow-queries = /data/mysql/var/db-Test2-slow.log #日志目錄。開啟慢日志查詢
long_query_time = 0.1? ?#記錄下查詢時間查過1秒。
log-queries-not-using-indexes? #表示記錄下沒有使用索引的查詢。
?
3)?mysqldumpslow分析日志
可用mysql提供的mysqldumpslow,使用很簡單,參數可-help查看?-s:排序方式。
c , t , l , r 表示記錄次數、時間、查詢時間的多少、返回的記錄數排序;
# ac , at , al , ar 表示相應的倒敘;
# -t:返回前面多少條的數據;
# -g:包含什么,大小寫不敏感的;
?
mysqldumpslow-s r -t 10 /data/mysql/var/db-Test2-slow.log
1.8.7. MySQL數據庫配置并發優化
Mysql的優化:一般分為配置的優化、sql語句的優化、表結構的優化、索引的優化,而配置的優化:一般包括系統內核優化、mysql本身配置文件的優化。
?
1.8.7.1.MySQL常見的優化參數詳解:
l? 硬件上的優化:
增加內存和提高磁盤讀寫速度,都可以提高MySQL數據庫的查詢,更新的速度。另一種提高MySQL性能的方式是使用多塊磁盤來存儲數據。因為可以從多塊磁盤上并行讀取數據,這樣可以提高讀取數據的速度。
MySQL參數的優化:
內存中會為MySQL保留部分的緩沖區。這些緩沖區可以提高MySQL的速度。緩沖區的大小都是在MySQL的配置文件中進行設置的。
下面對幾個重要的參數進行詳細介紹:
1)? key_buffer_size:表示索引緩存的大小。這個值越大,使用索引進行查詢的速度就越快。? 配置內存的80%
2)? table_cache:表示同時打開的表的個數。這個值越大,能同時打開的表的個數就越多。這個值不是越大越好,因為同時打開的表過多會影響操作系統的性能。
3)? query_cache_size:表示查詢緩沖區的大小。使用查詢緩存區可以提高查詢的速度。這個方式只使用與修改操作少且經常執行相同的查詢操作的情況;默認值是0。? ?
4)? Query_cache_type:表示查詢緩存區的開啟狀態。0表示關閉,1表示開啟。
5)? Max_connections:表示數據庫的最大連接數。這個連接數不是越大越好,因為連接會浪費內存的資源。? 參考值為1000
6)? sort_buffer_size:排序緩存區的大小,這個值越大,排序就越快。
7)??Innodb_buffer_pool_size:表示InnoDB類型的表和索引的最大緩存。這個值越大,查詢的速度就會越快。這個值太大了就會影響操作系統的性能。內存的80%
?
附一個真實環境MySQL配置my.cnf內容,可以根據實際情況修改:
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
user = mysql
server_id = 10
port = 3306
socket = /tmp/mysql.sock
datadir = /data/mysql/data1
old_passwords = 1
lower_case_table_names = 1
character-set-server = utf8
default-storage-engine = MYISAM
log-bin = bin.log
log-error = error.log
pid-file = mysql.pid
long_query_time = 2
slow_query_log
slow_query_log_file = slow.log
binlog_cache_size = 4M
binlog_format = mixed
max_binlog_cache_size = 16M
max_binlog_size = 1G
expire_logs_days = 30
ft_min_word_len = 4
back_log = 512
max_allowed_packet = 64M
max_connections = 4096
max_connect_errors = 100
join_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
sort_buffer_size = 2M
query_cache_size = 64M
table_open_cache = 10000
thread_cache_size = 256
max_heap_table_size = 64M
tmp_table_size = 64M
thread_stack = 192K
thread_concurrency = 24
local-infile = 0
skip-show-database
skip-name-resolve
skip-external-locking
connect_timeout = 600
interactive_timeout = 600
wait_timeout = 600
#*** MyISAM
key_buffer_size = 512M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 64M
myisam_max_sort_file_size = 1G
myisam_repair_threads = 1
concurrent_insert = 2
myisam_recover
#*** INNODB
innodb_buffer_pool_size = 16G
innodb_additional_mem_pool_size =32M
innodb_data_file_path =ibdata1:1G;ibdata2:1G:autoextend
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 120
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_thread_concurrency = 16
innodb_open_files = 10000
#innodb_force_recovery = 4
#*** Replication Slave
read-only
#skip-slave-start
relay-log = relay.log
log-slave-updates
?
1.8.8.MySQL版本查詢
[root@localhost tmp]# mysql -V
mysql?Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (i386) using readline 5.1
[root@localhost tmp]#
?
1.8.9.Mysql管理軟件phpmyadmin?? navicat
http://www.phpmyadmin.net/downloads/
?
安裝phpMyAdmin,一個客戶端管理工具
1、到官網下載phpMyAdmin-3.5.2.2-all-languages.tar.gz
2、解壓 tar -zxvfphpMyAdmin-3.5.2.2-all-languages.tar.gz?
3、將解壓后的文件夾重命名為phpMyAdmin,放到apache的站點目錄下
4、在瀏覽器中輸入http://localhost/phpMyAdmin/index.php即可看到管理界面了。
?
需要支持php5.5以上版本
?
配置文件
/var/www/html/mysql/libraries/config.default.php
?
$cfg['PmaAbsoluteUri'] = '';????????????? # 這里填寫phpMyAdmin 的訪問網址
$cfg['Servers'][$i]['host'] ='localhost';??? # 服務器IP或127.0.0.1? 不能使用localhost
$cfg['Servers'][$i]['port'] ='';??? ????????# 默認端口3306
$cfg['Servers'][$i]['user'] ='root';?????? # 默認用戶名
fg['Servers'][$i]['password'] ='';?????? # 密碼
$cfg['Servers'][$i]['auth_type'] ='cookie';??? # 驗證類型?
?
四種模式可供選擇,cookie,http,HTTP,config
?config方式即輸入 phpMyAdmin 的訪問網址即可直接進入,無需輸入用戶名和密碼
當該項設置為 cookie,http 或 HTTP 時,登錄 phpMyAdmin 需要數據用戶名和密碼進行驗證,具體如下:
?????PHP 安裝模式為 Apache,可以使用 http 和cookie;
?????PHP 安裝模式為 CGI,可以使用 cookie。
?
錯誤提示:
?
修改配置文件中:
$cfg['Servers'][$i]['host'] = 'localhost';
更換成
$cfg['Servers'][$i]['host'] = '127.0.0.1';
?
錯誤提示:
?
phpmyadmin提示:The mbstring extension is missing. Pleasecheck your PHP configuration
?
yuminstall php-mbstring –y
?
The mysqliextension is missing. Please check your PHP configuration. See our documentation formore information.
安裝yum install php-mysql –y
?
php增加mysqli擴展
正在運行的php上增加mysqli擴展,基本方法與加載其他擴展一樣,就是不用再單獨下載擴展包了,php安裝包里就自帶,找到你當前php運行的版本,我的是php-5.2.10,具體方法如下:
tar -zxf php-5.2.10.tar.gz
cd php-5.2.10/ext/mysqli
/usr/local/php/bin/phpize???##生成configur文件
./configure–with-php-config=/usr/local/php/bin/php-config–with-mysqli=/usr/local/mysql/bin/mysql_config????##這里可能會不一樣,根據你php和mysql的安裝路徑而定。
make
make install??##完成后有以串路徑,把他復制下來,一會要用,我的返回是/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613
vi /usr/local/php/lib/php.ini???##php.ini這里可能也會不一樣,有的會在/usr/local/php/etc下,也有在/etc下的。
在最后一行加入如下字段
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/mysqli.so
其中mysqli.so前邊的路徑就是make install后返回的路徑
重啟php服務或是apache服務,我這里是apache
/etc/init.d/httpd restart
在php-5.2.10/ext中有很多這樣的模塊,都可以用以上方法實現。
?
1.8.10.重新初始數據庫
/usr/local/mysql/bin/mysql_install_db--user=mysql --datadir=/usr/local/mysql/var --basedir=/usr/local/mysql? ?# 初始化數據庫??? --datadir=指定數據目錄?? --basedir=指定數據基礎目錄
?
1.8.11.修改mysql用戶密碼
?
Mysqladmin –uroot? password “123456”
update user set password=password("123456")where user='root';
flush privileges;
?
1.9.Mysql 數據庫管理
?
1.9.1.創建數據庫? Create Database
?
??? ?create database db_name;
?
???? create database if not exists db_name?? 如果不存在就創建,不報錯
?
1.9.2.查看數據庫 ?Show Databases
???? show databases;
?
1.9.3.刪除數據庫 ?Drop Database
???
??? ?drop datebase [if exists] db_name;?
???? 注:刪除無法恢復
?
???? Drop database bbs; # 刪除bbs數據庫
?
1.10.Mysql 數據表操作
?
1.10.1.創建表:Createtable tb_name (字段名 數據類型)
?????use mydb??? # 使用哪個庫? 類型于sql中先選擇數據庫名
?????create table [if exists] tb_name(col1,col2,...字段名)
?
????? create table [if exists]tb_name(col1,col2,...字段名) type=inodb? # 創建數據庫并指定引擎
?
例:createtable students(name char(20) not null, age char(10) unsigned,sex char(10)not null);
Name | Age | sex |
?
1.10.2.查看表: showtables
?? ???查看庫中的表:? show tables;
?? ???查年表中的結構: desc tabale_name;
?
1.10.3.刪除表:???????????????????????????????????????? Droptable tb_name
????? drop table [if exists] tb_name;
?
??? ???droptable bbs; # 刪除bbs表
1.10.4.修改表:Altertable ………….
???? ??alter table tb_name;
修改 modify??? 改屬性? 改數據類型
改變 change??? 改值??? 改名稱
增加 add
刪除 drop
?
增加:add
語法格式: alter table students add 字段名varchar(100)?? # 添加字段名指定數據類型varchar
???????實例: alter talbe students add telphone int(20);? # 修改students表增加telphone列,
?????
修改值:change
???? 例:?ALTER TABLE students CHANGE “原字段1“ ”現字段2“ VARCHAR(100)?AFTER Name;
??????????# 修改”原字段1”的字段名和類型,添加到Nmae字符之后
??????????# 要指定源字段,新字段,新類型
?
修改屬性:modify
?????例: alter tableusers modify tel text(10);
??????????# 修改tel字段的字段類型?
?
刪除列: drop
例:altertable user drop id;
??????????# 刪除user表中的id列
1.10.5.清空表:deletefrom tables
?
# 清空表的內容
delect from jf_t1;
?
1.10.6.復制一張表 createtables tb_name select * from tb_name
?
# 復制一張表和數據:
create tablenew_table select * from old_table;
?
# 復制一張表不復制數據
create tablenew_table select * from old_table where 0 ;
?
1.10.7.重命名表? rename table
RenameTABLE tb_name TO new_tb_name
?
altertable rename tb_name to new_table?? 重命名表
?
1.11.Mysql 數據管理
?
1.11.1.插入數據:Insertinto tb_name …? values …
指定字段插入:
????insert? into? tb_name (col1,col2,...)values? ('string',num,...);
?????# 插入數據 (字段名)? VALUES值 (‘字符串’, 數值1-9)
???????字符串要單引? 數值不需要
?
????insert? into? tb_name (col1,col2,...)values? ('string',num),('string',num)
??????# 可同時插入多行數據
?
???? 例: insert into student (name,sex)value ('zhongliang'.‘m’),(‘xiaoliang’,'f');
??????# 插入前先查詢表的結果DESCtb_name? 看哪些是必須插入值的
??????# 未指定的字段代表是允許為null的,可以不在字段位寫,按順序寫上不允許為空的字段
?
不指定字段插入
?
?????不指定字段插入,代表全部都插入值
name | age | sex | telnet |
????????
?? ?例:insert into students values ('zhongliang',20,'m',13417557083);
?
語句插入1000條
for i in 'sql 1 10000' ; mysql -e "usebbs;inster into t1 values ('zhonglaing','20','man');";done
?
1.11.2.查詢內容:select *from table;
?
# 顯示表的所有字段
describe user;
?
select 字段? frometb_name where? 條件
select * from user;? # 查看所有慎用
??
selectcount(*) from user;? 統計多少行
?
select * from user limit 10; 看10行? # 在生產環境中不要查所有,應為當上千條數據時會卡死
?
select * from user where 列名>30;?? #? 查詢某列的值大于30的
select * from user where 列名 like ‘%abc%’; ??# 查詢某列的值包含匹配abc字符的所有內容
?
# 顯示user表的第一行內容
select *from user limit 1;
select *from user where name="" ?limit10\G;
selectname from user where nam="";
?
# 內容匹配查詢
select *from user name link "%zhong%";
select *from user name link "%zhong%" and name=xxx ;
?
# 排列顯示,
select * from user where User='root'\G;?
?
1.11.3.修改數據:Updatetb_name Set
?
?updatetb_name set 列名=“新值”?where? 列名=“value”;??? # id
?????
? 例:update student set tel=13417557083where name=zhongliang;
??????# 修改zhongliang用戶的tel電話
?
1.11.4.刪除數據:DeleteFrom tb_name where
?
??? deletefrom tb_name where id='value';
?
?? 例:delete form student wheretel=13417557083
?
1.12.Mysql 數據庫備份還原
?
Xtranbackup 備份工具
1.12.1.Mysql備份數據庫
?
備份數據庫
?
mysqldump -uroot -p --all-databases >all.sql? ??# 備份服務器中所有的庫
?
# 備份mysql 使用root用戶,密碼123456 備份到/tmp/
mysqldump -uroot -p123456 mysql ?> /tmp/mysql2016.sql
?
直接將MySQL數據庫壓縮備份
mysqldump ?-uroot -p databasename | gzip> backupfile.sql.gz
?
同時備份多個MySQL數據庫
mysqldump -uroot -p –databases databasename1databasename2 databasename3 > multibackupfile.sql
?
僅僅備份數據庫結構
mysqldump –no-data –databases databasename1 databasename2databasename3 > structurebackupfile.sql
?
?C. 跨主機備份
? ? ?使用下面的命令可以將host1上的sourceDb復制到host2的targetDb,前提是host2主機上已經創建targetDb數據庫:
?
mysqldump -uroot -p sourceDb | mysql –uroot–p ?--host=192.168.1.100 -C targetDb
? ? ?-C指示主機間的數據傳輸使用數據壓縮
??? 目標主機必須gran授權允許源主機連接
?
1.12.2.Mysql恢復數據庫
# 恢復庫
mysql> mysql –uroot ?zhongliang < /tmp/zhongliang.sql;
?
# 恢復數據庫先創建數據庫名,再恢復
?
還原壓縮的MySQL數據庫
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
?
1.12.3.Mysql備份表
?
Mysqldump –uroot –p zhongliang user > /tmp/user.sql;
?
備份MySQL數據庫某個(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1specific_table2 > backupfile.sql
?
1.12.4.Mysql恢復表
Mysql> source /tmp/mysql.sql;
# 在進入數據庫中執行
?
1.12.5.查詢數據路徑
數據庫默認存放在/var/lib/mysql/
?
1.13.Mysql 權限管理
?
1.13.1.創建用戶
?
Create ?user ?‘username’@’Iphost’? identified by ?'password'
??
???? 例: create ?user ‘zhongliang'@'%' identified by ?'123456'
?
1.13.2.刪除用戶
??? ??drop user 'username'@'host'
?
?????host:
????????ip:
??? ?????hostname:
????????network
????????通配符:?? _:匹配任意單個字符,192.168.0._? 代表0-9
?????????????????? %:匹配任意字符
?
??????zhongliang@'%'
?
1.13.3.設置權限
?
??????例:grant allprivileges on mydb.* to 'zhongliang'@'%'
??????????# 給zhongliang所有權限
?
訪問授權:
?
select 查詢
insert 插入
delete 刪除
update 更新
create???創建
alter????修改
drop?????刪除
references?外鍵
create temporary table 臨時表
index????索引
create view?創建視圖
show view?查詢視圖
create routine? 存儲過程
alter routine
execute?
?
grant select(user_id,username) on smp.users
?
grant select(id, se, rank) ontestdb.apache_log
grant all(所有權) on [(數據庫)*.*(表)] to (用戶)root@'IP地址' identified by '密碼';
?
grant all on mysql to root@127.0.0.1identified by ‘123456';
?
# 刷新權限
flush privileges;
?
1.13.4.查詢權限
?
Show grantsfor 'zhongliang'@'%'
?
# 查詢某個IP是否有授權
select * from mysql.user whereHost=”192.168.1.100” \G
?
1.13.5.取消權限
?
Revoke allon mysql.* from ‘root’@’localhost’;
?
1.13.6.Mysql忘記密碼如何破解、
道先停止Mysql服務,然后以跳過權限方式后臺啟動
/usr/bin/mysqld_safe --user=myusql--skip-grant-tables &????? #--skip-grant-tables 跳過權限表啟動
Mysql 進入數據庫
update user set password=password('123456')where user='root' and host=’ ’;? ?修改密碼
?加了and host可以只刪一條,否則是root都刪了
Flush privileges;
?
1.13.7.修改服務器root的密碼:
Mysqladmin –uroot password ‘123456’
mysqladmin –uroot –p123456password?? newpassword??? ;
?
1.13.8.root權限丟失怎么解決?
?
更新的MYSQL.USER表的所有字段中為N的為Y就可以了。
update user set Select_priv ='Y' where user = 'root';
update user set Insert_priv ='Y' where user = 'root';
update user set Update_priv ='Y' where user = 'root';
update user set Delete_priv ='Y' where user = 'root';
update user set Create_priv ='Y' where user = 'root';
update user set Drop_priv ='Y' where user = 'root';
update user set Reload_priv ='Y' where user = 'root';
update user set Shutdown_priv ='Y' where user = 'root';
update user set Process_priv ='Y' where user = 'root';
update user set File_priv ='Y' where user = 'root';
update user set Grant_priv ='Y' where user = 'root';
update user set References_priv ='Y' where user = 'root';
update user set Index_priv ='Y' where user = 'root';
update user set Alter_priv ='Y' where user = 'root';
update user set Show_db_priv ='Y' where user = 'root';
update user set Super_priv ='Y' where user = 'root';
update user set Create_tmp_table_priv ='Y' where user = 'root';
update user set Lock_tables_priv ='Y' where user = 'root';
update user set Execute_priv ='Y' where user = 'root';
update user set Repl_slave_priv ='Y' where user = 'root';
update user set Repl_client_priv ='Y' where user = 'root';
update user set Create_view_priv ='Y' where user = 'root';
update user set Show_view_priv ='Y' where user = 'root';
update user set Create_routine_priv ='Y' where user = 'root';
update user set Alter_routine_priv ='Y' where user = 'root';
update user set Create_user_priv ='Y' where user = 'root';
update user set Event_priv ='Y' where user = 'root';
update user set Trigger_priv ='Y' where user = 'root';
?
1.14.Mysql 主從同步
?
1.14.1.主從原理
mysql主從同步的原理:
1、在master上開啟bin-log日志,記錄更新,插入,刪除的語句。
2、必須開啟三個線程,主上開啟io線程,從上開啟io線程和sql線程。
3、從上io線程通過授權連接master,master通過io線程檢查到slav的請求的日志、postsion點位置。
4、master將這些相應的請求內容發送給slave,slave收到后,將內容存放在中繼日志realy_log里面,同時生成寫入一個master-info,寫入日志記錄和pos點。
日志記錄同步的點。
5、slave的sql線程檢查到realy-log日志更新的內容,并將更新的內容解析成sql語句然后在本地去exec執行。
6、主從同步是屬于異步方式。
1.14.2.MySQL主從同步配置
?
配置主(master)
修改添加
server-id=1
log-bin=mysql-bin???? # mysql-bin日志前綴,可自定義
binlog-do-db=db1,db2? # 需要同步的庫
binlog-ignore-db=db1,db2 # 忽略不同步的庫
?
# binlog兩參數2選1都不寫全部同步
?
2. ?修改配置文件后,重啟mysql?? service mysqld restart
?
3. ?grant replication slave on *.* to root@'localhost'identified by '123456';? # 創建同步用戶
?? Flush privileges;
?
4. ?show master status; # 一定要記住前兩列的內容,
| File???????????? | Position? | Binlog_Do_DB?? |
?mysql-bin.0000007??? 106???????
?
設置從(slave)
?
1. vi/data/mysql/my.cnf
server -id =2?? # 這個數據不能和主一樣
以下可選參數:
replicate-do-db=db1,db2
replicate-ignore-db=db1,db2
?
2. 進入mysql
執行:slave stop;
?
change master to
master_host='192.168.1.131',master_user='bbs',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=1724;
?
執行:slave start;
?
3. 從上查看從的狀態:? showslave status\G;
???
?Slave_IO_Running: No
?Slave_SQL_Running: Yes
?
?Last_IO_Errno: 1593
?Last_IO_Error:???? # 檢查是否因為有錯誤NO
?
# 檢查以上二項參數是否都為YES,
?
vi /root/.mysql_bistory?? # 創建mysql歷史命令
ln -s dev/noull > mysql_history?? # 保戶命令歷史,創建成空文件
?
系統歷史命令清除? bashrc history -c
?
1.14.3. MySQL主從同步故障解決方案
1.14.3.1.Mysql主從同步,master突然down機,如何恢復:
1、在slave數據庫上,更改授權網站數據庫IP為slave。(這里可以種用/etc/host文件能修改服務器IP和域名的對應,這樣只要修改host文件,不需要修改服務器的授權IP)
2、修改網站服務器config目錄下:
config_global.phpconfig_ucenter.php 把原先masterip改成slave ip地址。
3、重啟httpd服務,切換成功。
4、在master上創建數據庫,在slave上將數據庫導出,在master上導入數據庫
5、添加數據庫grant授權用戶,
6、如果添加授權用戶和密碼是一樣,后面可省略,否則在slave重新設置連接change
7、stop slave,再開始start slave;? 檢查show slave status\G;是否已OK
?
1.14.3.2.忽略錯誤后,繼續同步
該方法適用于主從庫數據相差不大,或者要求數據可以不完全統一的情況,數據要求不嚴格的情況
解決:
stop slave;
set?global sql_slave_skip_counter =1;????# 1指的是跳一步,可以自定義多少步
start slave;
之后再用mysql>show slave status\G? 查看:
?
1.14.3.3.重新做主從,完全同步
該方法適用于主從庫數據相差較大,或者要求數據完全統一的情況
解決步驟如下:
1) 進入mater,進行鎖表,
mysql> flush tables with read lock;
注意:該處是鎖定為只讀狀態,語句不區分大小寫
2) 進行數據備份
?[root@server01 mysql]#mysqldump -uroot -p ?mysql> mysql.sql
?
3) 查看master 狀態
mysql> showmaster status;
+-------------------+----------+--------------+-------------------------------+
| File????????????? | Position | Binlog_Do_DB |Binlog_Ignore_DB????????????? |
+-------------------+----------+--------------+-------------------------------+
|mysqld-bin.000001 |???? 272 |????????????? |
+-------------------+----------+--------------+-------------------------------+
4) 把mysql備份文件傳到從庫機器,進行數據恢復
[root@server01mysql]#scp mysql.sql root@192.168.1.13:/tmp/
5) 停止slave的狀態
mysql> stopslave;
6) 在slave上恢復數據庫
?mysql> source /tmp/mysql.sql
7) 設置從庫同步用戶
?changemaster to master_host = '192.168.1.12',master_user = root,master_password='123456', master_log_file = 'mysqld-bin.000001', master_log_pos=272;
?
8)重新開啟從同步
mysql> startslave;
9)查看同步狀態
mysql> showslave status\G? 查看:
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
10)在master上解鎖:mysql>unlocktables;
?
1.14.3.4.mysql-binlog數據恢復:
查看binlog日志的命令:mysqlbinlog?? mysql-bin.000001|more
備份:cp?? mysql-bin.000001? /data/back/20150411/
恢復1: mysqlbinlog --start-position=215?--stop-position=336?mysql-bin.000001 | mysql -uroot -p
# 注,在勿操作的結點前面開始恢復,stop的post點的肖前點的記錄不會執行!!!
恢復2:mysqlbinlog--start-datetime="2016-10-18 22:18:25"--stop-datetime="2016-10-18 22:28:38" log.000002 >/home/mysql.sql
use 進入到庫里
source /home/mysql.sql
?
1.14.4.MySQL主主同步配置
雙機熱備的概念簡單說一下,就是要保持兩個數據庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個數據庫數據一致。這樣做的好處多。 1. 可以做災備,其中一個壞了可以切換到另一個。 2. 可以做負載均衡,可以將請求分攤到其中任何一臺上,提高網站吞吐量。? 對于異地熱備,尤其適合災備。
?
在主從同步已經建好的情況下:
?
Slave設置
在slave中創建用戶?
grant replication slave on *.* to root@'127.0.0.1'identified by '123456';? # 創建同步用戶
?
flush tables with read lock;?? # 鎖定mysql寫入,設為只讀
?
打開slave上的 /etc/my.cnf, 開啟slave的binarylog:
Log-bin=mysql-bin
?
如果數據是同步的,我們不需要導數據,直接查看slave的狀態:
Show master status\G;
#記下File和Position兩個值
?
Master設置
?
啟動同步 設置連接參數
change master tomaster_host='127.0.0.1',master_port=3306,master_user=root,master_password='123456',
master_log_file='mysql-bin.000007',master_log_pos=106;
?
然后重啟mysql服務。然后查看,slave狀態是否正常:
Show slave status\G;
?
1.14.5.MySQL主主同步故障解決方案
圖中出現了兩個No。
Slave_IO_Running: No
Slave_SQL_Running: No
說明slave沒有成功, 即,從B到A的同步沒有成功。 我們去查看mysql錯誤日志,前面說過位置:
找到? 機器名.err 文件,打開看看:
看圖中的error信息。? 說找不到中繼日志文件。
這是因為我們在配置A的中繼文件時改了中繼文件名,但是mysql沒有同步。解決辦法很簡單。
先停掉mysql服務。? 找到這三個文件,把他們刪掉。一定要先停掉mysql服務。不然還是不成功。你需要重啟一下機器了。或者手動kill mysqld。
好了,啟動mysql之后。我們在來檢查一下slave狀態:
?
1.15.Mysql 常見故障
?
故障1
ERROR 2002 (HY000): Can't connect to localMySQL server through socket '/var/lib/mysql/mysql.sock' (2)
?
故障原因:服務未啟動?? service mysqld restart
?
[Warning] '--skip-locking' is deprecated and will be removed ina future release. Please use '--skip-external-locking' instead.
錯誤提示:
101009 15:40:10 mysqld_safe Starting mysqld daemon with databases from /var/db/mysql?
?
將/etc/my.cnf里面的skip-locking 改為skip-external-locking
?
#interactive-timeout 能數值調大
?
error connecting to master'zhongliang@192.168.207.129:3306' - retry-time: 60? retries: 86400
?
解決方案:密碼錯誤,用戶不存在等
?
初始數據庫故障
?
'--skip-locking' is deprecated and will be removed in a futurerelease. Please use '--skip-external-locking' instead.
?
解決方法:
將/etc/my.cnf里面的skip-locking改為skip-external-locking
重啟mysql
?
/usr/local/mysql/bin/mysqld: File ‘./mysql-bin.index' not found (Errcode: 13)
?
/var的權限不夠
?
Mysql啟動故障
?
mysql 錯誤 You need to use –log-bin to make –binlog-formatwork
?
出現此錯誤的原因是?你注釋掉了
/etc/my.cnf?文件中的
log-bin=MySQL-bin?,但是沒有注釋掉binlog_format?這條
?
解決辦法:編輯my.cnf文件,將binlog_format?這條注釋掉.
?
1.15.1.主從同步故障
mysql> showmaster status\G;
***************************1. row ***************************
??????????? File: mysql-binlog.000001
??????? Position: 309
??? Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00sec)
?
ERROR:
No query specified
?
Got fatal error1236 from master when reading data from binary log: 'Could not find first logfile name in binary log index file'
轉載于:https://blog.51cto.com/zhongliang/1878981
總結
以上是生活随笔為你收集整理的Linux MYSQL 数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 讯飞语音引擎3.0 文字
- 下一篇: Redis Cluster搭建方法简介2