必备知识:
1、MYSQL 用户授权
1、查看用户授权表
select user,host,password from mysql.user
2、登录mysql
mysql -u root -p password -h (IP)
3、给从服务器设置授权用户账户
grant all on *.* to user(用户名)@192.168.2.1 identified by '123'(密码);
注:该账户必须授予 REPLICATION SLAVE 权限,这里为了方便,就设了all
2、MYSQL bin-log 日志
1、解释:二进制日志
2、开始bin-log日志
配置文件中添加:
log-bin = mysql-bin(mysql-bin是文件的文件名)
3、查看是否开启log-bin
命令:
show variables like "%log-bin%"
4、与bin-log有关的日志刷新
1、flush logs :
此时就会多一个最新的bin-log日志
2、show master status; :
查看最后一个bin日志
3、reset master :
清空所有的bin-log日志
4、查看bin-log值日的内容:
命令:mysqlbinlog --no-defaults mysql-bin.00001 (--no-defaults:这个指令的作用就在于字符集的问题,原因可能是mysql开发的BUG)
注:这个命令好像有点不对,不知是不是我写错了,2014-5-31:01:51:39,待查
3、MYSQL 主从复制
1、Mysql 数据的备份和数据丢失之后的找回
1、MYSQL 备份语句:
mysqldump -u root -p123 test(库名) -l -F > /tmp/test.sql
解释:其中 -l表示的意思,就是在备份期间锁定数据库,不能进行读写操作,而-F的作用是,重新生成新的日志文件,也包括log-bin日志
2、MYSQL 恢复语句:
mysql -uroot -p123 3、问题:
假设数据库备份的时间是在9点,但是服务器挂掉的时间是在10点,问如何恢复9点到10点之间的数据
回答:
可以通过mysql的log-bin日志来恢复9点到10点之间的数据,用的的命令是 mysqlbinlog :
命令示范: mysqlbinlog --no-default mysql-bin.00001 --stop-position='280' | mysql -uroot -p123 test
命令解释:--stop-position='280' 这个参数,是指定需要恢复到哪条数据为止
:--start-position='106' 这个参数,是指从哪条数据开始恢复
:test 指的是要被恢复的数据库
4、MYSQL 的读写锁定:不适用 mysqldump(此命令已经自带参数 -l 进行锁定,并自动解锁)
锁定语句:flush tables with read lock;
解锁语句:unlock tables;
2、 MYSQL 的主从服务器配置:
1、MYSQL 主服务器的配置:
1、需要开启:
log-bin = mysql-bin(logs的文件名)
2、设置唯一的server-id:
server-id = 1 备注:取值范围 1 到 2的32次方 减 1
3、在主服务器上为从服务器建立访问权限:
命令:
grant all on *.* to user@192.168.2.1 identified by 123
解释:
在主服务器上建立一个拥有全部权限的用户user,操作范围是所有库和所有表,用户user的地址就是192.168.2.1,密码为123.注意:在访问时如果地址不正 确,则亦访问不了
4、备注:
1、主服务器配置文件选项:
binlog-do-db=mysql #需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
binlog-ignore-db=mysql #不需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
log-slave-updates #这个参数一定要加上,否则不会给更新的记录些到二进制文件里
slave-skip-errors #是跳过错误,继续执行复制操作
2、MYSQL 从服务器的配置:
1、需要开启:
log-bin = mysql-bin
2、设置唯一的server-id:
server-id = 2
3、在从服务器的配置文件中,需要指定访问的主服务器的地址,端口以及所用到的用户名
实例:
master-host = 192.168.2.2
master-user = user
master-pass = 123
maste-port = 3306
master-connect-retry = 60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db = test #需要备份的数据库名
replicate-ignore-db=test #忽略的数据库
log-slave-updates #这个参数一定要加上,否则不会给更新的记录些到二进制文件里
slave-skip-errors #是跳过错误,继续执行复制操作
备注:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
4、在从服务器上启动slave进程
命令:
mysql> start slave;
5、查看配置结果(status)
命令:
show slave status;
3、配之中常见的问题:
1、一般的异常只需要选择跳过一步即可解决
命令:-->slave stop;
-->SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 ;
-->slave start;
2、主键冲突,表已存在等错误:
方案:在 MYSQL 主服务器配置文件中跳过此类异常,继续下一步
slave_skip_errors = 1062, 1032, 1060
4、备注:
1、
当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。
2、
MySQL使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上。当发出 START SLAVE 时,从服务器创建一个I/O线程,以连接主服务器并让主服务器发送二进制日志。主服务器创建一个线程将二进制日志中的内容发送到从服务器。从服务器I/O 线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志。第3个线程是SQL线程,从服务器使用此线程读取中继日志并执行日 志中包含的更新。SHOW PROCESSLIST 语句可以查询在主服务器上和从服务器上发生的关于复制的信息
3、
默认中继日志使用host_name-relay-bin.nnnnnn形式的文件名,其中 host_name 是从服务器主机名,nnnnnn是序列号。用连续序列号来创建连续中继日志文件,从000001开始。从服务器跟踪中继日志索引文件来识别目前正使用的中 继日志。默认中继日志索引文件名为host_name-relay-bin.index。在默认情况,这些文件在从服务器的数据目录中被创建。中继日志与 二进制日志的格式相同,并且可以用mysqlbinlog读取。当SQL线程执行完中继日志中的所有事件后,中继日志将会被自动删除。
4、
在主服务器上为复制设置一个连接账户。该账户必须授予 REPLICATION SLAVE 权限。如果账户仅用于复制(推荐这样做),则不需要再授予任何其它权限。
4、MYSQL 分区技术
需巩固的地方:
1、可能需要用到的 Linux 命令:
1、pstree
2、ifconfig eth0 192.168.2.1
3、scp
2、window 命令:
3、Mysql 命令:
1、show status; /G
单词:
client -> 客户端
variable 变量
replicate 复制

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

全表掃描在MySQL中可能比使用索引更快,具體情況包括:1)數據量較小時;2)查詢返回大量數據時;3)索引列不具備高選擇性時;4)複雜查詢時。通過分析查詢計劃、優化索引、避免過度索引和定期維護表,可以在實際應用中做出最優選擇。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版
中文版,非常好用

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。