欢迎进入欧博网址(Allbet Gaming),欧博网址www.ALLbetgaming.us开放会员注册、代理开户、电脑客户端下载、苹果安卓下载等业务。

首页快讯正文

用usdt充值(www.caibao.it):高性能 Mysql 主从架构的复制原理及设置详解

admin2021-01-2124

原题目:高性能 Mysql 主从架构的复制原理及设置详解

  • 负载平衡(load balancing)

  • 备份(Backups)

  • 高可用性和容错行 High availability and failover

  • master将改变纪录到二进制日志(binary log)中(这些纪录叫做二进制日志事宜,binary log events);

  • slave将master的binary log events拷贝到它的中继日志(relay log);

  • slave重做中继日志中的事宜,将改变反映它自己的数据。

  • 该历程的第一部门就是master纪录二进制日志。在每个事务更新数据完成之前,master在二日志纪录这些改变。MySQL将事务串行的写入二进制日志,纵然事务中的语句都是交织执行的。在事宜写入二进制日志完成后,master通知存储引擎提交事务。

  • 下一步就是slave将master的binary log拷贝到它自己的中继日志。首先,slave最先一个事情线程——I/O线程。I/O线程在master上打开一个通俗的毗邻,然后最先binlog dump process。Binlog dump process从master的二进制日志中读取事宜,若是已经跟上master,它会睡眠并守候master发生新的事宜。I/O线程将这些事宜写入中继日志。

  • SQL slave thread(SQL从线程)处理该历程的最后一步。SQL线程从中继日志读取事宜,并重放其中的事宜而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,以是中继日志的开销很小。

  • 此外,在master中也有一个事情线程:和其它MySQL的毗邻一样,slave在master中打开一个毗邻也会使得master最先一个线程。复制历程有一个很主要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。

  • Master和slave的MySQL数据库版本同为5.0.18

  • IP地址:10.100.0.100

mysql > ,RELOAD,SUPER *.*

@’ ’

‘ ’;

password @ =old_password( )

server-id=1

-bin=mysql-bin

server-id:为主服务器A的ID值

-bin:二进制调换日值

log_bin = mysql-bin

server_id = 2

relay_log = mysql-relay-bin

log_slave_updates = 1

read_only = 1

mysql> MASTER_HOST= ,

-> MASTER_USER= ,

-> MASTER_PASSWORD= ,

-> MASTER_LOG_FILE= ,

-> MASTER_LOG_POS= ;

mysql> G

*************************** ***************************

Slave_IO_State:

Master_Host: server1

Master_User: repl

Master_Port:

Connect_Retry:

Master_Log_File: mysql-

Read_Master_Log_Pos:

Relay_Log_File: mysql-relay-

Relay_Log_Pos:

Relay_Master_Log_File: mysql-

Slave_IO_Running:

Slave_SQL_Running:

...omitted...

Seconds_Behind_Master:

mysql> ;

mysql> G

*************************** ***************************

Slave_IO_State: Waiting send

Master_Host: server1

Master_User: repl

Master_Port:

Connect_Retry:

Master_Log_File: mysql-

Read_Master_Log_Pos:

Relay_Log_File: mysql-relay-

Relay_Log_Pos:

Relay_Master_Log_File: mysql-

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

...omitted...

Seconds_Behind_Master:

  • Slave_IO_Running=Yes

  • Slave_SQL_Running=Yes

mysql> G

*************************** ***************************

:

: root

Host: localhost:

db:

Command:

:

State:

Info:

*************************** ***************************

:

: repl

Host: localhost:

db:

Command: Dump

:

State: Has sent ; waiting for binlog to be updated

Info: NULL

2 rows in ( sec)

mysql> G

*************************** ***************************

:

:

Host:

db:

Command:

:

State: Waiting send

Info:

*************************** ***************************

:

:

Host:

db:

Command:

:

State: Has relay ; waiting for the slave I/O thread to it

Info:

*************************** ***************************

:

: root

Host: localhost:

db:

Command:

:

State:

Info:

( sec)

,

usdt收款平台

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

  • (1)master的某个时刻的数据快照;

  • (2)master当前的日志文件、以及天生快照时的字节偏移。这两个值可以叫做日志文件坐标(log file coordinate),由于它们确定了一个二进制日志的位置,你可以用SHOW MASTER STATUS下令找到日志文件的坐标;

  • (3)master的二进制日志文件。

  • (1)冷拷贝(cold copy)

    • 住手master,将master的文件拷贝到slave;然后重启master。瑕玷很明显。

  • (2)热拷贝(warm copy)

    • 若是你仅使用MyISAM表,你可以使用mysqlhotcopy拷贝,纵然服务器正在运行。

  • (3)使用mysqldump

    • <1>锁表:若是你还没有锁表,你应该对表加锁,防止其它毗邻修改数据库,否则,你获得的数据可以是不一致的。如下:

    • 使用mysqldump来获得一个数据快照可分为以下几步:

mysql> ;
  • <2>在另一个毗邻用mysqldump建立一个你想举行复制的数据库的转储:

shell> mysqldump
  • <3>对表释放锁。

mysql> ;

(Statement-Based Replication)

(Row-Based Replication)

mysql> summary_table(col1, col2, sum_col3)

-> col1, col2, (col3)

-> enormous_table

-> col1, col2;

mysql> enormous_table col1 = ;

  • (1)mysql-bin.index

  • (2)mysql-relay-bin.index

.mysql-02-relay-bin.000017

.mysql-02-relay-bin.000018

  • (3)master.info

.mysql-02-relay-bin.000019

254

mysql-01-bin.000010

286

0

52813

  • (4)relay-log.info

(Replication Filters)

  • (1)每个slave只能有一个master;

  • (2)每个slave只能有一个唯一的服务器ID;

  • (3)每个master可以有许多slave;

  • (4)若是你设置log_slave_updates,slave可以是其它slave的master,从而扩散master的更新。

  • (1)差别的slave饰演差别的作用(例如使用差别的索引,或者差别的存储引擎);

  • (2)用一个slave作为备用master,只举行复制;

  • (3)用一个远程的slave,用于灾难恢复;

的Master-Master(Master-Master in Active-Active Mode)

mysql> tbl = + ;

mysql> tbl = * ;

的Master-Master(Master-Master in Active-Passive Mode)

Master –Slaves - Slaves

Last_IO_Error: error connecting to master 'repl1@IP:3306' - retry-time: 60 retries

mysql> ;

ERROR 1192 (HY000): Can't the given command because you have active an active

mysql> master_host=‘IP PASSWD mysql-

ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;

these ids must be different replication to work (or the --replicate-same-server-id option must be used on

slave but this does not always make sense; please check the manual before using it).

mysql> show variables like ;

mysql> global server_id=2;

mysql> slave start;

  • 1、在从库检查slave状态:

  • 2、在主库检查mysql-bin.001574的偏移量位置

mysqlbinlog mysql-bin.001574 > ./mysql-bin.001574.bak

tail -10 ./mysql-bin.001574.bak

  • 3、重新设置salve

mysql> ;

mysql> master_log_file= ,master_log_pos= ;

mysql> ;

  • 第一种:在master上删除一条纪录,而slave上找不到。

Last_Error: Could not Delete_rows market_edu.tl_player_task; Can't find record in 'tl_player_task', Error_code: 1032; HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.002094, end_log_pos 286434186

stop slave;

global sql_slave_skip_counter=1;

start slave;

  • 第二种:主键重复。在slave已经有该纪录,又在master上插入了统一条纪录。

Last_SQL_Error: Could not Write_rows hcy.t1;

Duplicate entry '2' for key 'PRIMARY',

Error_code: 1062;

HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000006, end_log_pos 924

  • 第三种:在master上更新一条纪录,而slave上找不到,丢失了数据。

Last_SQL_Error: Could not Update_rows hcy.t1;

Can't find record in 't1',

Error_code: 1032;

HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000010, end_log_pos 263

t1 ( , );

; sql_slave_skip_counter= ; ;

网友评论