MySQL詳細03-ロック-トランザクション-GTID


MySQLのロック
操作時のロックモード
リードロック:共有ロックとも呼ばれ、複数のリード操作が同時に適用され、ブロックされない
書き込みロック:排他ロックまたは排他ロックとも呼ばれ、ブロックされます.
ロック粒度による分類
テーブルロック:table lock、テーブル全体をロックし、オーバーヘッドが小さい
行ロック:row lock、必要な行をロックして、オーバーヘッドが大きい
注意:ロックの粒度が小さいほど、オーバーヘッドは大きくなりますが、同時性が優れています.
ロックによる実装位置分類
MySQLロック:手動でロックをかけることができ、表示ロック(表レベルロック)とも呼ばれます.
lock tables Tb_Name {read | write} [,Tb_Name2 Lock_Type2]…

ストレージエンジンロック:自動的に実行され、暗黙ロックとも呼ばれます.
行レベルロック:選択した行の一部のみをロックし、InnoDBストレージエンジンでサポートされている別の表示ロックです.
select … lock in share mode; #           
select … for update; #           

MySQLのトランザクション
トランザクションは原子間クエリ文のセットです
ACIDテスト:ACIDテストを満たすと、トランザクションがサポートされているか、互換性があることを示します.
A:Atomicity #    
C:Consistency #    
I:Isolation #    ,                        
D:Durability #    ,        ,           

独立性レベル
read uncommited (    ) #       ,     ,  
#   :            
read commited(   ) #               ,          ,  
#      :       ,             ,              
repeatable read(   ) #       
#   :          ,              
serializable(    )  #          ,     ,     

MySQLのトランザクション独立性レベルの表示
show global variables like ‘tx_isolation’;
select @@global.tx_isolation;
#   :            ,        “   ”

MySQLがトランザクションを実現する原理:MVCC(マルチバージョン同時制御)
       ,InnoDB                    ;
       ,InnoDB       2     ,            ,            (           :system version number)
      ,                  ,                  
 :  2        :read commited repeatable read

手動でトランザクションを実行
start transaction; #           
rollback;#          ,      
savepoint a; #           a
rollback to a; #       a
commit; #     
#           ,              ,            
select @@global.autocommit; #           
set global autocommit = 0; #         
#        ,       ,       

事務のGTID
概要:Global Transaction ID、MySQL 5.6で導入されたsalveをmasterに迅速に向上させ、トランザクションの安全を保証するメカニズム.レプリケーション機能の構成、監視、管理がより容易になり、より堅牢になります.
#   :
GTID=UUID(Server ID:128 )+   ,       
GTID             ;
GTID           slave;
#  :  salve     master,               GTID 

GTIDを使用した単純マスターモデルの構成
説明:MariaDB 10バージョンをMySQL 5.6の代替プログラムとして使用します.違いはmariadbでGTID機能がデフォルトでオンになっているため、gtid-mode,enforce-gtid-consistencyの2つのパラメータはサポートされていません.
プライマリ・スレーブ・ノードのサービス・プロファイルの構成
#   master  :
[mysqld]
server-id=1  #        server-id   
port=3306
datadir=/mydata/data
socket=/tmp/mysql.sock
log-bin=master-bin #        ,             
binlog-format=ROW #         ,   row
log-slave-updates=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-threads=2
binlog-checksum=CRC32 #               
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-host=master.lamp.com # slave      master   slave     IP  ,   master   “show slave hosts”   slave    
report-port=3306 # slave      master   slave   mysqld  ,  slave   3306     
#   slave  :
[mysqld]
server-id=11
port=3306
datadir=/mydata/data
socket=/tmp/mysql.sock
log-bin=slave-bin
binlog-format=ROW
log-slave-updates=true #   slave                      
master-info-repository=TABLE # slave  repository      master              ,     table;               
relay-log-info-repository=TABLE
sync-master-info=1 #   master-info     1       ,   slave     
slave-parallel-threads=2 #   slave SQL   ;0           
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1 #                      ,           
report-host=slave.lamp.com
report-port=3306

プライマリ・サーバ上のレプリケーション・ユーザーの作成
mysql> grant replication slave on *.* to repluser@'172.16.25.%' identified by 'replpass';

スタンバイノードの初期データセットの提供
#     ,         ,    slave  ;
# master   
musqldump --single-transaction --all-databases --flush-logs --master-date=2 > all.sql
# slave   
mysql < all.sql
#       GTID,       master   show master status                  ,      slave     ;

ノードからのレプリケーションスレッドの開始
#      GTID  ,       :
mysql> change master to master_host='master.lamp.com',master_user='repluser',master_password='replpass',master_user_gtid=current_pos;
mysql> start slave;

確認表示
masterとslaveでそれぞれ「show master status;」を実行し、Executed_の表示Gtid_Setアイテムが一致しているかどうか
下一篇:MySQL深入02-DML的Select查询
上一篇:MySQL深入04-ストレージエンジン