MySQL和Docker ...不是新概念,人們已經使用Docker已有一段時間了。
對於剛開始為此發展的人來說,可能會有一些障礙。
儘管MySQL在本地運行良好,但如果要在不同版本的MySQL上測試代碼,則很容易擁有多個版本是很好的。
多年來,一種選擇當然是Giuseppe Maxia的https://mysqlsandbox.net/ 。
這是一個非常有效的解決方案,能夠啟動多個實例並測試複製等。
在跨不同版本的MySQL進行測試時,Docker現在也是另一個經常使用的場景。 下面僅介紹一些步驟,以輕鬆安裝多個版本。
我使用OSX,因此這些示例適用於OSX。
…
The latest from the MySQL community
Ideas, releases, practical guides, and perspectives from the people building with MySQL.
前言
MySQL 的 innodb 引擎之所以使用 B+tree 来存储索引,就是想尽量减少数据查询时磁盘 IO 次数。树的高度直接影响了查询的性能。一般树的高度在 3~4 层较为适宜。数据库分表的目的也是为了控制树的高度。那么如何获取树的高度呢?下面使用一个示例来说明如何获取树的高度。
示例数据准备
建表语句如下:
CREATETABLE`user` ( `id` int(11) NOTNULLAUTO_INCREMENT, `name` varchar(100) CHARACTERSETlatin1 DEFAULTNULL, `age` int(11) DEFAULTNULL, PRIMARYKEY(`id`), KEY`name` (`name`), KEY`age` (`age`) ) ENGINE=InnoDB DEFAULTCHARSET=utf8
表中插入100万条数据。数据如下:
mysql> select* fromuserlimit 2\G *************************** 1. row *************************** id: 110000 name: ab age: 100 *************************** 2. row *************************** id: 110001 name: ab age: 100 2 …[获取更多]
MySQL如何恢復表空間?
這不是新的信息,但我沒有多說,所以現在為那些需要它的人解決它。
如果您丟失了ibd文件......您將丟失數據。 因此,如果您有一個可用的副本..或者即使您從另一個數據庫同步,您仍然可以導入它。
什麼/你如何失去表空間?
這是一個恢復表空間的簡單示例。
mysql> Create database demo;
mysql> use demo;
mysql> CREATE TABLE `demotable` (
-> `id` int(11) NOT NULL AUTO_INCREMENT,
-> `dts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON
UPDATE CURRENT_TIMESTAMP,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB;
現在我們存儲一些數據......
mysql> INSERT INTO demotable (id) VALUES (NULL);
Query OK, 1 row affected (0.10 …
所以我意識到在最近出現這種情況後我沒有發表過關於此的帖子。
以下是場景:在午夜進行備份,他們使用每個數據庫的MySQL轉儲。 然後在第二天上午十點數據庫崩潰。
在我被調用之前發生了一系列事件,但他們把它帶到了MyISAM表的數據庫版本和表空間中缺少的IBD文件。
所以選項1,從備份恢復會讓我們到午夜,我們會丟失數小時的數據。 選項2,我們重新導入1000的ibd文件並保留所有內容。
然後我們有選項3,從備份恢復,然後應用binlogs進行最近的更改。
為了使它更有趣,他們沒有我被告知的所有ibd文件,我確實看到一些丟失。 所以不確定這是怎麼可能的,但是選項2變成了無效選項。
當然,他們希望盡可能減少數據丟失,因此我們選擇了3。
…
所以MySQL的組複製出來了MySQL 5.7。 現在已經有一段時間了,人們開始更多地詢問它。
因此,max_connections從my.cnf文件中設置的值下降到214的問題在Ubuntu上已經存在了一段時間。
作為一個例子,它在2015年被注意到
我最近又碰到了這個,並通過以下步驟解決了。
# cp /lib/systemd/system/mysql.service
/etc/systemd/system/
# cd /etc/systemd/system/
# vi mysql.service
LimitNOFILE=infinity
LimitMEMLOCK=infinity
# systemctl …
MySQL在4月25日晚上推出最新的MySQL更新版-MySQL 8.0.16,由於品質控制能力和向下相容性的加強,自從MySQL
邁入8.0後版本發佈模式就改為持續交付模式(CDM),在每個更新版都加入新的功能.8.0.16是8.0正式發行以來第五個更新版,它除了修正200個以上的bug
讓它更穩定外,還推出了多項新加能,其中比較重要的有:
1.
加強對中文的支持, 增加一個字符集的文字排序(collation) – utf8mb4_zh_0900_as_cs,
“as”代表重音敏感,”cs”代表大小寫敏感,在這個字符集下,SQL命令的order by
順序可依四聲音符的順序排序.這為中文環境提供了許多的方便性和運用空間
2.
資料建模的宣告制約支援check constraint – 我們等你好久了!!!
3. …
因此,keepalived已經存在了很長一段時間......但是對許多人來說這仍然是一個謎。
所以這是一個非常簡單的例子,說明keepalived如何與MySQL一起工作。 希望這可以幫助那些有疑問的人。
我們將有一個簡單的主設備到奴隸設置。 意思是..我們寫一個,除非我們故障轉移到第二個事件。
1 - 安裝keepalived
#yum搜索keepalived keepalived .x86_64:負載均衡器和高可用性服務
僅限名稱和摘要匹配,對所有內容使用“全部搜索”。 #yum -y install
keepalived
你現在應該有一個配置文件
#ls -ltr /etc/keepalived/keepalived.conf
保留原件,因為你總是備份..右.... #cp /etc/keepalived/keepalived.conf
/etc/keepalived/keepalived.conf.orig
因此,您需要找出可用於虛擬IP的ipaddress。 …
所以我最近被要求調查為什麼更新的MySQL 5 .6比舊的5.5慢
所以我開始尋找標準變量和緩存等等。
測試用例是一個簡單的例程,在5.6上運行的時間比在5.5上運行時長兩倍。
添加到混合.. 5.6版本有兩倍Innodb_buffer_pool_size,當然更多ram整體。
所以我用MySQLslap開始了一些測試......
Mysqlslap測試顯示它在5.6上較慢
5.6:
mysqlslap --defaults-file =。/。my.cnf --concurrency = 150
--iterations = 130 -query = / test.sql --create-schema =
applicationdata --verbose
基準
運行所有查詢的平均秒數:0.028秒
運行所有查詢的最小秒數:0.019秒
運行所有查詢的最大秒數:0.071秒
運行查詢的客戶端數量:150
每個客戶端的平均查詢數:1
5.5:
mysqlslap --defaults-file …
長久以來大多數MySQL的用戶認為它沒有functional
index,當我們在where條件的比對值中放入函式,它就只能做全表掃瞄,例如: select * from
sakila.payment where month(payment_date) = 2; 我們想查2月支付的款項,MySQL
的優代器只能做全表掃瞄.這個問題在5.7版以後己經不是個問題了.
我們看看這個例子:
在sakila demo database 中未加functional index到payment表時,我們的表結構如下:
mysql> show create table payment\G ***************************
1. row ***************************
Table: payment Create Table:
CREATE TABLE `payment` ( `payment_id` smallint(5) unsigned
NOT NULL AUTO_INCREMENT, `customer_id` smallint(5)
unsigned NOT NULL, `staff_id` tinyint(3) unsigned NOT
NULL, `rental_id` int(11) DEFAULT NULL, `amount`
decimal(5,2) NOT NULL, `payment_date` datetime NOT NULL, …