MySQL 5.6 基于GTID 进行主从复制

关于LIO-SAM编译时出现错误 /usr/bin/ld: 找不到 -lBoost::timer 关于LIO-SAM编译时出现错误: 下载LIO-SAM代码 进入LIO-SAM文件夹,通过以下代码编译: mkdir build cd build cmake .. make 报错: /usr/bin/ld: 找不到 -lBoost::timer collect2: error: ld returned 1 exit status CMakeFiles/lio_sam_imuPreintegration.dir/build.make:759: recipe for target 'devel/lib/li 阅读详情

MySQL 5.6 基于GTID 进行主从复制

标签(空格分隔): mysql


一、什么是GTID?

GTID全称GTIDs are unique identifiers comprising the server UUID (of the original master) and a transaction number

GITD是唯一标示符是由服务器的UUID(全局唯一标示对于任何一个服务器都是128位随机符)并结合事务ID号来组合成一个唯一的标示,某一个主机上某一个事务的标识码 就叫做**GTID**

自从引入GTID之后 MySQL5.6的binlog在每一个事务的首部都会写上GTID的标示,在二进制文件中,每一个事务的语句记录下来的时候在这个事件首部会把相关联的GTID给记录下来。

因此GTID使得追踪和比较复制事务变得非常简单,而且能够实现从崩溃中快速进行恢复。

尤其是innodb引擎,要想使用高可用功能,必须要依靠GTID实现


二、GTID工作方式

Mysql5.6引入了一个新特性多线程复制,有了gtid相关的功能之后,我们Slave服务器上所谓的多线程复制是我们Master服务器上有多颗cpu,多个事务同时执行的时候,会比Slave服务器读取事务的速度要快,从库存放的只有一个线程。这样在多线程复制的时候Slave服务器会比Master服务器落后很多.
从服务器可以开启多个进程,并行的读取数据存放在本地。但是比如说我们bbs库,2个线程互相读取数据,会造成问题。

Mysql5.6 多线程复制每个数据库也仅能使用一个线程,这样在我们多线程复制的时候只有多个库进行复制,我们的多线程复制才有意义

三、MySQL主从复制原理

这个主从复制原理基本上是mysql的基础知识,我这里在给大家介绍一遍

 MySQL的主从复制是一个异步的复制过程(虽然一般情况下感觉是实时的),数据将从一个Mysql数据库(我们称之为Master)复制到另一个Mysql数据库(我们称之为Slave),在Master与Slave之间实现整个主从复制的过程是由三个线程参与完成的。其中有两个线程(SQL线程和IO线程)在Slave端,另一个线程(I/O线程)在Master端。

  要实现MySQL的主从复制,首先必须打开Master端的binlog记录功能,否则就无法实现。因为整个复制过程实际上就是Slave从aster端获取binlog日志,然后再在Slave上以相同顺序执行获取的binlog日志中的记录的各种SQL操作

image_1bs4ms8nq106l1c401ujg1cor1ond9.png-61.5kB

  • [ ] 从库生成两个线程,一个I/O线程,一个SQL线程;
  • [ ] i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
  • [ ] 主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
  • [ ] SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

四、主从节点数据库配置

1.1环境如下

关于MySQL 5.6的安装我就不介绍了,网上太多了,大家自行百度吧!

IP地址mysql版本系统版本作用端口
192.168.11.11MySQL5.6CentOS Linux release 7.2.1511Master3306
192.168.11.12MySQL5.6CentOS Linux release 7.2.1511Slave3306

关闭防火墙、Selinux、调整字符集 (2台都请执行,当然一台使用多实例也可以)

systemctl stop firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
echo '*   -    nofile   100000 ' >>/etc/security/limits.conf

1.2配置Master节点my.cnf

[client]
port        = 3306
socket      = /usr/local/mysql/tmp/mysql.sock

[mysqld]

########mysql master  GTID conf##############
binlog-format=ROW
log-bin=master-bin
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=1
report-port=3306
report-host=master.abcdocker.com
#######################################

port        = 3306
basedir         = /usr/local/mysql/
socket      = /usr/local/mysql/tmp/mysql.sock
pid-file        = /usr/local/mysql/var/mysql.pid
datadir         = /usr/local/mysql/var/


tmpdir          = /usr/local/mysql/tmp/
slave-load-tmpdir   = /usr/local/mysql/tmp/
!include /usr/local/mysql/etc/mysqld.cnf

# skip lever
skip-name-resolve
skip-symbolic-links
skip-external-locking
skip-slave-start

#thread level


table_open_cache = 2048

#############connect############
back_log                 = 50
max_connections          = 1000
max_connect_errors       = 10000
#open_files_limit         = 10240

##############timeout###########
connect-timeout          = 10
wait-timeout             = 800
interactive-timeout      = 800
slave-net-timeout        = 60
net_read_timeout         = 30
net_write_timeout        = 60
net_retry_count          = 10
net_buffer_length        = 16384
max_allowed_packet       = 64M

################# cache #############
table_open_cache              = 2048
thread_stack             = 192K
thread_cache_size        = 100
thread_concurrency       = 16

# qcache settings
query_cache_size         = 20m
query_cache_limit        = 2M
query_cache_min_res_unit = 2K

# default settings
# time zone
default-time-zone        = system
character-set-server     = utf8
default-storage-engine   = InnoDB

# tmp & heap 
tmp_table_size           = 512M
max_heap_table_size      = 512M

log-bin                  = mysql-bin
log-bin-index            = mysql-bin.index
relay-log                = relay-log
relay_log_index          = relay-log.index

# warning & error log
log-warnings             = 1
log-error       = /usr/local/mysql/log/mysql.err

log-output               = FILE

# slow query log
slow_query_log           = 1
long-query-time          = 1
slow_query_log_file      = /usr/local/mysql/log/slow.log
#log-queries-not-using-indexes
#log-slow-slave-statements

general_log              = 1
general_log_file         = /usr/local/mysql/log/mysql.log
max_binlog_size          = 1G
max_relay_log_size       = 1G

# if use auto-ex, set to 0
relay-log-purge          = 1

# max binlog keeps days
expire_logs_days         = 7

binlog_cache_size        = 1M

# replication
replicate-wild-ignore-table     = mysql.%
replicate-wild-ignore-table     = test.%
# slave_skip_errors=all

key_buffer_size                 = 30M
sort_buffer_size                = 2M
read_buffer_size                = 2M
join_buffer_size                = 8M
read_rnd_buffer_size            = 8M
bulk_insert_buffer_size         = 64M
myisam_sort_buffer_size         = 64M
myisam_max_sort_file_size       = 10G
myisam_repair_threads           = 1
myisam_recover

group_concat_max_len            = 64K

transaction_isolation           = REPEATABLE-READ

innodb_file_per_table
#############mysql5.5new################
innodb_file_format = Barracuda
########################################

innodb_additional_mem_pool_size = 10M
innodb_buffer_pool_size         = 200M
innodb_data_home_dir            = /usr/local/mysql/var/
innodb_data_file_path           = ibdata1:100M:autoextend

################mysql5.5new############
innodb_read_io_threads          = 8
innodb_write_io_threads         = 8
innodb_purge_threads            = 1
########################################

innodb_thread_concurrency       = 16
innodb_flush_log_at_trx_commit  = 1

innodb_log_buffer_size          = 16M
innodb_log_file_size            = 50M
innodb_log_files_in_group       = 2
innodb_log_group_home_dir       = /usr/local/mysql/var/

innodb_max_dirty_pages_pct      = 90
innodb_lock_wait_timeout        = 50
#innodb_flush_method            = O_DSYNC


################mysql5.6 new#####################
innodb_buffer_pool_instances    = 16
innodb_change_buffering         = all
innodb_adaptive_flushing        = 1
innodb_io_capacity              = 2000
innodb_old_blocks_time          = 1000
innodb_stats_on_metadata        = 0
#################################################

old-passwords                   = 0

[mysqldump]
quick
max_allowed_packet              = 64M

[mysql]
no-auto-rehash
default-character-set           = utf8
connect-timeout                 = 3

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


#提示:配置文件除了上面mysql master  GTID conf注释下的是我们GTID需要用的,其他的大家可以用默认就可以。我这个配置比较全

1.3配置Master详解

[mysqld]
binlog-format=ROW       #行记录
log-bin=master-bin     #二进制文件
log-slave-updates=true  #表示当从服务器从中继日志中读取事件在本地应用的时候,是否把操作记录到本地的二进制文件中(为了GTID复制的安全,我们启用这项) 主服务器必须启用,从服务器可以不启用
gtid-mode=on         #gtid-mode=是否启用GTID功能
enforce-gtid-consistency=true   #是否强制GTID一致性(所谓GTID一致性指的是在记录到二进制的时候有些特殊的语句能够设计数据库修改的语句它是不记录的,但是可以靠其他功能保证数据一致性。主要和临时创建的表语句有关)


在MySQL 5.6.2之前,slave记录的master信息以及slave应用binlog的信息存放在文件中,即master.info与relay-log.info。在5.6.2版本之后,允许记录到table中
master-info-repository=TABLE  #主要用于主服务器记录从服务连接信息和每一个从服务器的二进制文件及其相关事件位置等信息记录到一个文件中(master.info)或一个表
relay-log-info-repository=TABLE      #让从服务器自己记录连接的主服务器是谁,主服务器哪一个二进制文件,及二进制文件的位置等等

对应的表分别为mysql.slave_master_info与mysql.slave_relay_log_info,且这两个表均为innodb引擎表

master info与relay info还有3个参数控制刷新:
sync_relay_log:默认为10000,即每10000次sync_relay_log事件会刷新到磁盘。为0则表示不刷新,交由OS的cache控制。
sync_master_info:若master-info-repository为FILE,当设置为0,则每次sync_master_info事件都会刷新到磁盘,默认为10000次刷新到磁盘;若master-info-repository为TABLE,当设置为0,则表不做任何更新,设置为1,则每次事件会更新表 #默认为10000
sync_relay_log_info:若relay_log_info_repository为FILE,当设置为0,交由OS刷新磁盘,默认为10000次刷新到磁盘;若relay_log_info_repository为TABLE,且为INNODB存储,则无论为任何值,则都每次evnet都会更新表。
建议参数设置如下:

sync_relay_log = 1
sync_master_info = 1
sync_relay_log_info = 1


在GTID模式下,每一个从服务器在连入主服务器的时候,它必须要告诉主服务器自己的主机名和IP地址and端口号这样我们在主服务器使用show slave hosts可以看到当前主服务器连接的从服务器信息
report-port=   从服务器的端口
report-host=   从服务器的主机名
report-host=master.abcdocker.com
report-port=3306

server-id=1     #同一个复制拓扑中的所有服务器的ID号必须唯一

从服务器并行的线程数
slave-parallel-workers=2
workers指的是进程
后面的进程数尽量等于数据库的个数或者小于,大于数据库的数量是没有意义的
如果=0 表示禁用多线程功能 


binlog-checksum、master-verify-checksum和slave-sql-verify-checksum:启用复制有关的所有校验功能
binlog-checksum=CRC32    #主服务器端在启动的时候要不要校验binlog本身的校验码
master-verify-checksum=1
slave-sql-verify-checksum=1

binlog-rows-query-log_events=1  #用于在二进制日志详细记录事件相关的信息,可降低故障排除的复杂度;

datadir"/mydata/data
socket=/tmp/mysql.sock   #mysql.sock的作用是server和client在同一台服务器,并且使用localhost进行链接的时候,就会使用socket来进行连接


log-slave-updates、gtid-mode、enforce-gtid-consistency、report-port和report-host:用于启动GTID及满足附属的其他需求;

1.4配置Slave详解

[mysqld]
binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=11               #需要和master不一样
report-port=3306
port=3306
log-bin=mysql.bin.log
report-host=slave.abcdocker.com   #名字也要和master不一样

#从节点不需要定义二进制日志,也可以不定义中继日志

1.5配置Slave节点配置my.cnf

[client]
port        = 3306
socket      = /usr/local/mysql/tmp/mysql.sock

[mysqld]
#############slave GTID conf#################################
binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=11
report-port=3306
report-host=slave.abcdocker.com
########################################################

port        = 3306
basedir         = /usr/local/mysql/
socket      = /usr/local/mysql/tmp/mysql.sock
pid-file        = /usr/local/mysql/var/mysql.pid
datadir         = /usr/local/mysql/var/


tmpdir          = /usr/local/mysql/tmp/
slave-load-tmpdir   = /usr/local/mysql/tmp/
!include /usr/local/mysql/etc/mysqld.cnf

# skip lever
skip-name-resolve
skip-symbolic-links
skip-external-locking
skip-slave-start

#thread level


table_open_cache = 2048

#############connect############
back_log                 = 50
max_connections          = 1000
max_connect_errors       = 10000
#open_files_limit         = 10240

##############timeout###########
connect-timeout          = 10
wait-timeout             = 800
interactive-timeout      = 800
slave-net-timeout        = 60
net_read_timeout         = 30
net_write_timeout        = 60
net_retry_count          = 10
net_buffer_length        = 16384
max_allowed_packet       = 64M

################# cache #############
table_open_cache              = 2048
thread_stack             = 192K
thread_cache_size        = 100
thread_concurrency       = 16

# qcache settings
query_cache_size         = 20m
query_cache_limit        = 2M
query_cache_min_res_unit = 2K

# default settings
# time zone
default-time-zone        = system
character-set-server     = utf8
default-storage-engine   = InnoDB

# tmp & heap 
tmp_table_size           = 512M
max_heap_table_size      = 512M

log-bin                  = mysql-bin
log-bin-index            = mysql-bin.index
relay-log                = relay-log
relay_log_index          = relay-log.index

# warning & error log
log-warnings             = 1
log-error       = /usr/local/mysql/log/mysql.err

log-output               = FILE

# slow query log
slow_query_log           = 1
long-query-time          = 1
slow_query_log_file      = /usr/local/mysql/log/slow.log
#log-queries-not-using-indexes
#log-slow-slave-statements

general_log              = 1
general_log_file         = /usr/local/mysql/log/mysql.log
max_binlog_size          = 1G
max_relay_log_size       = 1G

# if use auto-ex, set to 0
relay-log-purge          = 1

# max binlog keeps days
expire_logs_days         = 7

binlog_cache_size        = 1M

# replication
replicate-wild-ignore-table     = mysql.%
replicate-wild-ignore-table     = test.%
# slave_skip_errors=all

key_buffer_size                 = 30M
sort_buffer_size                = 2M
read_buffer_size                = 2M
join_buffer_size                = 8M
read_rnd_buffer_size            = 8M
bulk_insert_buffer_size         = 64M
myisam_sort_buffer_size         = 64M
myisam_max_sort_file_size       = 10G
myisam_repair_threads           = 1
myisam_recover

group_concat_max_len            = 64K

transaction_isolation           = REPEATABLE-READ

innodb_file_per_table
#############mysql5.5new################
innodb_file_format = Barracuda
########################################

innodb_additional_mem_pool_size = 10M
innodb_buffer_pool_size         = 200M
innodb_data_home_dir            = /usr/local/mysql/var/
innodb_data_file_path           = ibdata1:100M:autoextend

################mysql5.5new############
innodb_read_io_threads          = 8
innodb_write_io_threads         = 8
innodb_purge_threads            = 1
########################################

innodb_thread_concurrency       = 16
innodb_flush_log_at_trx_commit  = 1

innodb_log_buffer_size          = 16M
innodb_log_file_size            = 50M
innodb_log_files_in_group       = 2
innodb_log_group_home_dir       = /usr/local/mysql/var/

innodb_max_dirty_pages_pct      = 90
innodb_lock_wait_timeout        = 50
#innodb_flush_method            = O_DSYNC


################mysql5.6 new#####################
innodb_buffer_pool_instances    = 16
innodb_change_buffering         = all
innodb_adaptive_flushing        = 1
innodb_io_capacity              = 2000
innodb_old_blocks_time          = 1000
innodb_stats_on_metadata        = 0
#################################################

old-passwords                   = 0

[mysqldump]
quick
max_allowed_packet              = 64M

[mysql]
no-auto-rehash
default-character-set           = utf8
connect-timeout                 = 3

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

1.6 Master 上创建复制用户

grant replication slave on *.* to repl@192.168.11.12 identified  by '123456';

说明:192.168.11.12是从节点服务器,如果想一次性授权更多的节点,可以自行根据需要修改。


1.7 为备节点提供初始数据集

锁定主表,备份主节点上的数据,将其还原至从节点;如果没有GTID,在备份时需要在master上使用show master status命令查看二进制文件名称及事件位置,以便后面启动slave节点时使用。

1.8 启动Slave节点的复制线程

如果启动了GTID功能,则使用如下命令;

CHANGE MASTER TO MASTER_HOST='master.abcdocker.com',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_AUTO_POSITION=1;
  • [x] MASTER_AUTO_POSITION 该参数在mysql5.6.5版本引入,如果进行change master to时使用MASTER_AUTO_POSITION = 1,slave连接master将使用基于GTID的复制协议。

  • [x] 使用基于GTID协议的复制,slave会告诉master它已经接收到或执行了哪些事务。计算这个集,slave需要读取全局参数gtid_executed以及通过show slave status获取的参数Retrieved_gtid_set。

  • [x] 结果集作为初次握手的一部分,发送到master,master发回它已经执行的且不在结果集这部分的所有事务。如果这些事务在master的binlog文件中已经被清除,master将会发送一个

提示:主从服务器节点时间要同步,主机名最好可以解析。

启动从库

mysql> start slave;

查看主从状态

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: master.abcdocker.com
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000005
          Read_Master_Log_Pos: 814
               Relay_Log_File: relay-log.000002
                Relay_Log_Pos: 1024
        Relay_Master_Log_File: mysql-bin.000005
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: mysql.%,test.%
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 814
              Relay_Log_Space: 1222
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: a961eee5-ae7a-11e7-89f1-000c29020966
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: a961eee5-ae7a-11e7-89f1-000c29020966:1-3
            Executed_Gtid_Set: a961eee5-ae7a-11e7-89f1-000c29020966:1-3
                Auto_Position: 1
1 row in set (0.00 sec)

五、演示

1.1 主库创建库

master-mysql> create database shopping;
Query OK, 1 row affected (0.00 sec)

从库查看

slave-mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| shopping           |
| test               |
+--------------------+
5 rows in set (0.01 sec)

这里已经出来了,我们导入点数据

1.2 导出一份数据

[root@abcdocker ~]#  mysqldump -uroot -p  --hex-blob --routines --triggers --single-transaction --default-character-set=utf8 shopping >slave.sql
Enter password: 

关于mysqldump相关参数请前往:https://www.abcdocker.com/abcdocker/20

现在我们已经将数据导入到主库,现在去从库看一下

master-mysql> show tables;
+------------------------------+
| Tables_in_shopping           |
+------------------------------+
| aaaaaa_activity               |
| aaaaaa_activity_detail        |
| aaaaa_address                |
| aaaaa_admin                  |

这时候主库和从库看到的数据应该和我们这里面显示的相同

常用命令

停止从库:
mysql> stop slave;
开启从库
mysql> start slave;
清除主从信息:(关闭从库才可以执行)
mysql> reset slave;

MySQL 复制过滤功能介绍

数据库过滤,数据同步的时候只复制某一个库或者某一个表或某些表的操作

1.1 配置介绍
主 [Master]

  • [ ] binlog-do-db-d   代表白名单(仅将指定数据库的相关修改操作记入二进制日志) 缺点:如果主服务器宕了,恢复的时候只可以恢复记录到二进制文件日志里面的数据量。

  • [ ] binlog-ignore-db   代表黑名单(只要和这里面设置相关的库,都不记录到二进制文件 )

  • [ ] 不管是do-db还是ignore-db我们都不建议在主端操作,一旦主库挂了,任何不被记录的数据都将无法还原。
    我们不开启do和ignore这个功能,这时候我们主库的binlog是完整的。但是在从库会有很多的二进制可以进行过滤

从[Slave]

  • [ ] replicate-do-db 白名单(只应用哪个数据库到本地 )
  • [ ] replicate-ignore-db 黑名单(忽略哪些数据库到本地)

  • [ ] 过滤的功能还可以在表级别实现
    replicate-do-table=    应用那些表到本地
    replicate-ignore-table=  忽略哪些表到本地

  • [ ] 在实现表同步的时候还可以使用通配符 replicate-wild-do-table= (abcdocker.tb%)abcdocker下面的所有tb开头的表 replicate-wild-ignore-table=

  • [ ] 通配符%,_ 我们可以一个指令使用多次,只要每次使用的值不同就可以

1.2 例子

例子:例如我们在mysql主从上,只复制abcdocker上的所有数据
从库设置如下

vim /etc/my.conf
relay-log = relay-log
relay-log-index =relay-log-index
replicate-do-db = abcdocker [库] 

重启mysqld
重启从库之后我们需要开启主从连接,在查看就可以看到我们这里只同步abcdocker库
image_1bs59gqgd1r461fq5jloltf176qm.png-56.6kB

主库设置如下

我们在主库创建2个databases
create database abcdocker;
create database discuz;
因为我们同步discuz库,而不同步abc库。

主库有如下库

master-mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| abcdocker          |
| discuz             |
| mysql              |
| performance_schema |
| shopping           |
| test               |
+--------------------+
7 rows in set (0.00 sec)

我们在去从库使用show databases;查看库是否有discuz和abcdocker库就可以
此时只有abcdocker库一个,因为我们授权的只有一个

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| abcdocker          |
| mysql              |
| performance_schema |
| shopping           |
| test               |
+--------------------+
6 rows in set (0.00 sec)

相关文章
MySQL主从原理

课堂练习及课后作业2.1:外部中断 本关任务:通过相关知识以及实验回答:版本 1 内核的第 6 次时钟中断发生时,断点和恢复点(指令地址)分别是多少?本关任务:修改版本 0 内核,使得每发生 100 次时钟中断,就在屏幕上输出一个字符‘t’和当时的进程号,如“t(0)”表示0号进程运行时发生了时钟中断。本关任务:通过实际操作回答在输出第一行 0/1 字符的过程中(如下图所示),共发生了几次时钟中断?本关任务:修改版本 1 内核源码,使得每次时钟中断发生时,都在屏幕上输出字符‘t’。分析版本1内核,找到第一次时钟中断的恢复点地址。 阅读详情

相关推荐

海康视觉通讯配置

本文介绍了海康通讯管理中TCP和Modbus协议的配置方法。TCP通讯时,视觉系统作为服务器接收PLC客户端发送的触发信号,需注意十进制与十六进制字符串的转换。Modbus配置需填写PLC的IP地址和寄存器首地址,并预先定义整型变量。TCP通讯需开启16进制发送模式以避免数据格式问题。文章重点说明了不同通讯方式下的数据格式转换和参数设置要点。

A567852的博客 2243

Centos7 Mysql5.6.40 主从结构 GTID 复制

Centos7 Mysql5.6.40 主从结构 GTID 复制GTID 复制(5.6新特性,5.7主流)GTID复制配置过程(准备MHA环境,1主2从) GTID 复制(5.6新特性,5.7主流) 介绍 GTID(Global Transaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号。 它的官方定义如下: 由两部分组成:GTID = source_id : transaction_id 7E11FA47-31CA-19E1-9E56-C43AA21293967:29 [r

专注于php高级知识分享 1362

强化学习 之 Actor Critic

简介 Actor Critic是一种结合体算法: (1)Actor 的前生是 Policy Gradients,这能让它毫不费力地在连续动作中选取合适的动作,而 Q-learning 做这件事会瘫痪; (2)Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法,能进行单步更新,而传统的 Policy Gradients 则是回合更新,这降低了学习效率。 算法思想 Actor...

Test_tju的博客 810

二、mysql主从配置及搭建(gtid方式)

本文讲解mysql通过gtid的方式制作主从。并且模拟宕机通过跳过gtid的事务进行备份恢复操作!!!线上可用!!!

weixin_57670650的博客 1512

手把手教你用STM32标准库写一个能OTA升级的Bootloader(附完整代码)

本文详细介绍了如何使用STM32标准库开发支持OTA无线升级的Bootloader系统,包括Flash分区规划、Bootloader核心实现、无线升级流程及安全校验机制。通过实战代码示例,帮助开发者快速掌握STM32固件升级技术,提升物联网设备的远程维护能力。

weixin_30181209的博客 262

obdumper和obloader迁移OceanBase业务库(一):实施手册

⭐️ 要求导出一致性数据时,建议在导出数据前,手动触发一次合并,在合并成功后再重新导出数据。:统计业务数据库下的所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…:检查业务数据库下的所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…:统计单个模式下所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…如果单张表的数据量太大,会导出为多个文件,文件命名会加上数字后缀。该过程会导出所有表的定义、以及定义在表上的索引定义。如果有多种数据库对象,会导出到不同的子路径下。

Sebastien23的博客 1024

Mysql配置主从复制-GTID模式

是指把数据从一个Mysql服务器(主节点)复制到一个或多个Mysql服务器(从节点)中,会把主节点服务器中的所有数据库实例、特定数据库实例或特定表等,全部复制到从节点服务器中。

weixin_45151960的博客 2228

29. 如何通过 ABAP 代码给 SAP OData 元数据增添注解

我们先看下效果,在 MPC_EXT 类的 DEFINE 方法里编写 ABAP 代码之后,用 Postman 使用 url 访问 OData metadata,在返回的数据里,能看到我们用 ABAP 代码添加的自定义注解。你好,请问可以不可以在odata里面通过什么设置,从而自动给metadata.xml中加上注解,实现value help的功能,还是说每次需要在metadata.xml中修改?的词汇引用,然后为命名空间 com.sap.vocabularies.UI.v1 声明了一个别名。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1657

MySQL主从复制之GTID模式

GTID用于在binlog中唯一标识一个事务。当事务提交时,MySQL Server在写binlog的时候,会先写一个特殊的Binlog Event,类型为GTID_Event,指定下一个事务的GTID,然后再写事务的Binlog。主从同步时GTID_Event和事务的Binlog 都会传递到从库,从库在执行的时候也是用同样的GTID写binlog,这样主从同步以后,就可通过GTID确定从库同步到的位置了。

weixin_68398469的博客 4178

stata 工具变量法【计量经济系列(七)】

stata 工具变量法【计量经济系列(七)】 1. 内生性 2. 工具变量3. 2SLS (二阶段最小二乘法) 4. 弱工具变量5. 工具变量外生性的过度识别检验 6. 豪斯曼检验6.1 传统豪斯曼 6.2 杜宾-吴-豪斯曼检验(DWH)

侯小啾技术博客 2万+

在 SAP HANA XS Advanced 中用 InA 打通 Web 化分析数据访问:架构原理、部署步骤与实战指南

本文介绍了如何在SAP HANA环境中通过InA协议为XS Advanced应用和分析工具提供实时数据访问。主要内容包括:InA协议的作用是将HANA计算视图等模型通过HTTP(S)暴露为实时数据源;SAP HANA Analytics Adapter(xsahaa)是关键组件,负责协议转换和连接管理;部署包含本地和云端两种形式,均需建立XSA空间与租户数据库的映射;实施前需准备HDI容器、适配器构建和网络验证;安全方面通过XSA用户角色和HDI授权双重控制;文章还提供了与SAP Analytics Clo

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 257

MySQL学习笔记:基于GTID的主从复制

一文教你搞懂基于GTID的主从复制原理和搭建过程!

qq_57629230的博客 1079

基于STM32+ESP8266+手机 APP+阿里云的智能小车设计与实现(项目资料ID:4)

本研究旨在设计一款高度智能化的智能小车系统,通过集成 STM32 微控制器、ESP8266 无线模块、手机 APP 以及阿里云平台,实现环境数据实时采集、远程精准控制和高效的数据交互。详细阐述系统各部分的设计原理、实现过程和测试结果,验证系统在实际应用中的可行性和有效性,为智能小车在多领域的应用提供技术支持。

以培养嵌入式工程师为己任 1万+

mysql 5.6复制新特性下主从复制配置[基于GTID]

mysql 5.6复制新特性下主从复制配置[基于GTID] 时间:2013年11月24日 | 分类:MySql 高可用 | 1条评论 | 浏览:1,279 次 1.mysql5.6在复制方面的新特性: (1).支持多线程复制:事实上是针对每个database开启相应的独立线程,即每个库有一个单独的(sql thread).针对这样的改进,如果我们想实现多线程复

guotao521的专栏 2654

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

mysql5.6GTID实现主从复制、读写分离

mysql5.6GTID实现主从复制、读写分离 环境: 主机1:centos7-master 主机2:centos7-slave 主机3:sentos6.5-mysql-proxy 一、安装mysql 主机1、主机2分别执行以下命令安装mysql5.6 1、擦好看系统自带的mysql并卸载 [root@localhost ~]# cat /etc/redhat-release

Vision909的博客 1616

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

MySQL5.6:基于GTID的主从复制

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34146805的博客 519

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

mysql5.6基于gtid模式_MySQL5.6.x基于GTID主从复制配置

一份MySQL5.6.x基于GTID主从复制配置实例,希望对你所有用,谢谢。本文环境:主库:CentOS6.7 x64 192.168.0.65 mysql-5.6.29备库:CentOS6.7 x64 192.168.0.66 mysql-5.6.29一、配置Mysql5.6 GTID主从(本节配置适合主从都是空库的情况)1. mysql主服务器配置说明: 基于GTID的主从复制需要在配置文件中...

weixin_34476159的博客 132

mysql 5.6 gtid 主从_MySQL5.6基于GTID的主从复制_MySQL

MySQL 5.6 的新特性之一,是加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力。什么是GTID?官方文档: 代码如下:mysql> GRANT REPLICATION SLAVE ON *.* TO repluser@172.16.88.205 IDENTIFIED BY 'replpassword';说明:172.16.88.205是从节点服务器;...

weixin_42373066的博客 275

mysql 5.6 gtid 主从_基于mysql5.6的GTID功能实现主从复制

基于mysql5.6的GTID和多线程功能实现主从复制配置环境主服务器:192.168.85.144 node1.a.com从服务器:192.168.85.145 node2.a.com一.搭建环境主从服务器上进行如下操作:1.创建数据存放目录[root@node1 ~]# mkdir -pv /mysqldata/datamkdir: created directory `/mysqldata...

weixin_39797758的博客 156

mysql 5.6 gtid 复制_MySQL5.6基于GTID的主从复制配置

全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性。GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。下面是一个GTID的具体形式。1、在MySQL5.6以前对于主从复制出现问题有时候需要你分析BINLOG找到POS点,然后在CHAN...

weixin_36031304的博客 170

mysql5.6基于gtid模式_MySQL5.6基于GTID的主从复制配置

全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性。GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。下面是一个GTID的具体形式。1、在MySQL5.6以前对于主从复制出现问题有时候需要你分析BINLOG找到POS点,然后在CHAN...

weixin_34546240的博客 166

mysql 5.6 gtid 复制_Mysql-5.6基于GTID主从复制

一、术语解析1.TID:Transaction ID,事务的ID号:也就是说在mysql复制中每一个事务都有自己的ID号(随机数)2.GTID:Global Transaction ID,全局事务ID,在整个事务架构中每一个事务ID号是全局唯一的,不止是在一个节点上而是整个主从复制架构中每任何两个事务的ID号都不会相同。3.全局事务ID是怎么生成的?简单来讲是由mysql服务器自动管理的,在mys...

weixin_34856444的博客 230

MySQL 5.6 GTID模式的主从复制

介绍 MySQL 5.6引入的GTID(Global Transaction IDs)使得其复制功能的配置、监控及管理变得更加易于实现,且更加健壮。 gtid是一个 unique 唯一的表示符,他是由服务器的uuid 全局唯一标示,是由128位的随机符组成,mysql-5.6是依靠server-id和uuid 来标示复制架构中的每一个主机,因为是128位的随机字符串在全局都不会重复,serve

xixihahahj的专栏 2332

MySQL5.6基于GTID主从复制

GTID简述: mysql数据库从5.6.5开始新增一种基于GDIT的复制方式。通过GDIT保证每个主库上提交的事务在集群中有一个唯一的ID.这种方式强化了数据库的主备一致性,故障恢复以及容错能力。 GTID (Global Transaction ID) 是对于一个已提交事务的编号,并且是一个全局唯一的编号。 GTID 实际上 是由 UUID+TID 组成的。其中 UUID 是一个 MySQL 实例的唯一标识。TID 代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。 环境准备: 操作系统:C

zl 222

mysql 5.6.36 基于GTID的主从复制

1. GTID介绍 GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组合而成。这个全局事务ID不仅仅在原始服务器器上唯一,在所有存在主从关系 的mysql服务器上也是唯一的。正是因为这样一个特性使得mysql的主从复制变得更加简单,以及数据库一致性更可靠。本文主要描述了快速配置一个基于GTID的主从复制架构。 2. GTID的概念 1、全局事务标识:global transaction identifiers。 2、GTID是一个事务一一对应,并且全

【优快云官方推荐】 226

MySQL5.6 - 基于GTID复制模式搭建主从复制、故障模拟、问题解决!

写在前面:本文主要讲解,GTID复制模式的参数配置、搭建过程中遇到的一些问题及其解决方法;针对一些常见问题场景,进行故障模拟,然后解决。如果对GTID的其他方面的知识想要做个了解,如:GTID优点、使用限制、实现原理等,可以移步到笔者的另一篇文章 GTID模式介绍环境:MySQL5.6.16版本CentOS release 6.5主从参数配置:对于GTID参数的含义,请参阅M...

weixin_34194359的博客 1463
上一篇: VisualSVN 迁移至Linux SVN+apache+ssl集成ldap
下一篇: 详解十三款运维监控工具
abcdocker
博客等级 码龄10年 173粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值