谁在或做过mysql cluster NDB 7.2集群
至少三;mysql cluster 7.1.3 安装笔记
mysqlmgr集群_mysql集群三种方式
mysqlmgr集群_mysql集群三种方式
asynchronous_connection_failover_add_source(channel-name,host,port,network-namespace,weight)
今天初步安装了一下mysql cluster,基本上都是按照文档做的,欢迎大家拍砖。
1,使用情况
Mament (MGMD) node 192.168.0.10
MySQL server (SQL) node 192.168.0.20
Data (NDBD) node "A" 192.168.0.30
Data (NDBD) node "B" 192.168.0.40
2,安装Mament、Sql node、 Data node 重复以下步骤:
[root@www local]# tar -zxvf mysql-cluster-gpl-7.1.3-linux-i686-glibc23.tar.gz
[root@www local]# mv mysql-cluster-gpl-7.1.3-linux-i686-glibc23 mysql
[root@www local]# groupadd mysql
[root@www local]# useradd -g mysql mysql
[root@www local]# chown -R mysql.mysql mysql
[root@www local]# /usr/local/mysql/scripts/mysql_install_db --user=mysql
[root@www mysql]# cp support-files/mysql.server /etc/rc.d/init.d/
[root@www mysql]# chmod +x /etc/rc.d/init.d/mysql.server
[root@www mysql]# chkconfig --add mysql.server
3,配置Mament:
[root@www mysql]# mkdir /var/lib/mysql-cluster
[root@www mysql]# vi /var/lib/mysql-cluster/config.ini
[ndbd default]
NoOfReplicas=2 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we he used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
# TCP/IP options:
[tcp default]
portnumber=2202 # This the default; howr, you can use any port that is free
# for all the hosts in the cluster
# Note: It is recommended that you do not specify the port
# number at all and allow the default value to be used instead
# Mament process options:
hostname=192.168.0.10 # Hostname or IP address of mament node
datadir=/var/lib/mysql-cluster # Directory for mament node log files
# Options for data node "A":
[ndbd]
# (one [ndbd] section per data node)
hostname=192.168.0.30 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's data files
# Options for data node "B":
[ndbd]
hostname=192.168.0.40 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's data files
# SQL node options:
[mysqld]
hostname=192.168.0.20 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# pures such as running ndb_restore)
[root@www mysql-cluster]# cp bin/ndb_mgm /usr/local/bin
4,配置MySQL server (SQL) node:
创建 /etc/myf并添加下面的内容
#ptions for mysqld process:
[mysqld]
ndbcluster # run NDB storage engine
ndb-connectstring=192.168.0.10 # location of mament server
# Options for ndbd process:
[mysql_cluster]
ndb-connectstring=192.168.0.10 # location of mament server
5,配置 Data (NDBD) node "A":
创建/etc/myf文件,并添加下面的内容
#ptions for mysqld process:
[mysqld]
ndbcluster # run NDB storage engine
ndb-connectstring=192.168.0.10 # location of mament server
# Options for ndbd process:
[mysql_cluster]
ndb-connectstring=192.168.0.10 # location of mament server
6,配置 Data (NDBD) node "B":
创建/etc/myf文件,并添加下面的内容
#ptions for mysqld process:
[mysqld]
ndbcluster # run NDB storage engine
ndb-connectstring=192.168.0.10 # location of mament server
# Options for ndbd process:
[mysql_cluster]
ndb-connectstring=192.168.0.10 # location of mament server
7,启动Mament:
[root@www local]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini
2010-05-05 13:20:19 [MgmtSrvr] INFO -- NDB Cluster Mament . mysql-5.1.44 ndb-7.1.3
2010-05-05 13:20:19 [MgmtSrvr] INFO -- Loaded config from '/usr/local/mysql/mysql-cluster/ndb_1_config.bin.1'
8,启动 Data (NDBD) node "A"及 Data (NDBD) node "B":
[root@www local]# /usr/local/mysql/bin/ndbd
2010-05-05 13:20:30 [ndbd] INFO -- Configuration fetched from '192.168.0.10:1186', generation: 1
9,启动 MySQL server (SQL) node
[root@www local]# /etc/init.d/mysql.server start
10,所有的都已经起动完成了
[root@www local]# ndb_mgm
-- NDB Cluster -- Mament --
ndb_mgm> show
Connected to Mament at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.30 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)
id=3 @192.168.0.40 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.10 (mysql-5.1.44 ndb-7.1.3)
[mysqld(API)] 1 node(s)
id=4 @192.168.0.20 (mysql-5.1.44 ndb-7.1.3)
mysql的 半同步和同步的区别
依旧依赖于半同步,没有从根本上解决数据一致性问题。异步(Asynchronous replication)
2.4.1. SAN共享储存MySQL默认的即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。
全同步(Fully synchronous replication)
指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步的性能必然会收到的影响。
半同步(Semisynchronous replication)
介于异步和全同步之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步,半同步提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步在低延时的网络中使用。
mysql读写分离原理是什么
[ndb_mgmd]读写分离就是利用mysql的主从完成的,A不间断的把binlog信息发送给B,保持B和A的数据一致,如果还需要在B上写的话,你需要开启主主模式。关于第三点,你如果采取的是A-B A-C A-D模式的话肯定是需要A给每个从库都需要发送binlog信息的,如果是A-B-C这种级联的模式,是只需要A给B发送一次binlog信息,然后B给C发一次。
Asynchronous Replication Automatic failover
其原理是在一条异步通道上配置多个可用源,当某个源不可用时(宕机、链路中断),且 sle 的 IO 线程尝试重连无效,自动根据权重选择新的源继续同步。 准备一个 MGR 集群和单实例,模拟链路切换,当 primary 故障,sle 自动切换到其他。dbdeployer deploy replication --topology=group 8.0.22 --single-primarydbdeployer deploy single 8.0.22
2. 在从机上建立指向 MGR 主的通道, change to _user='msandbox',_password='msandbox', _host='127.0.0.1',_auto_ition=1,source_connection_auto_failover=1,_port=23223,_retry_count=6,_connect_retry=10 for channel 'mgr-single';
3. 在从机上配置 asynchronous connection auto failover
配置 asynchronous connection auto failover 的两个函数:
asynchronous_connection_failover_delete_source(channel-name,host,port,network-namespace)
权重值大的被优先级选择,可以配合MGR的选举权重配置 asynchronous_connection_failover 的权重。当 MGR 切换,异步也能切换到新的主。
SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23223,null,100); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23224,null,80); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23225,null,50);start sle for channel 'mgr-single'; 4. 检查异步通道是否启用 failover。
mysql> SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM performance_schema.replication_connection_configuration; +--------------+---------------------------------+| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |+--------------+---------------------------------+| mgr-single | 1 |+--------------+---------------------------------+1 row in set (0.01 sec 5. 把 MGR 的 primary kill 掉,这个从会在尝试几轮重连失败后自动切换到次权重的源,其日志中会输出切换信息。
注意:当主故障,一旦链路成功 failover 后,在新的链路没有故障时,如果原主恢复,是不会回切的。如果当前链路发生故在 _retry_count 和 _connect_retry 的设置上要考虑尝试重连多久才切换源。障,会再次选择权重高的进行切换
谁在或做过mysql cluster NDB 7.2集群
Port一、灾难恢复
我们知道,数据库的日常维护,最重要的就是备份和恢复。有同事(也有DBA)告诉我说,cluster的维护成本很高。就我看来,Mysql发布这个版本的集群方案,是经过严格测试的。宣称99.999%的可用性,毫秒级实时性非常诱人。引用的一张图:
在所有的管理,绝大部分的API(Mysqld和Memcache),超过半数的数据都崩溃的情况下,cluster仍然可以保障你的业务正常运行。的事务如果出现冲突,cluster会自动修复,如果其中任意一台数据出现故障无法启动,那么,我们马上可以换上新的,使用ndbd --initial初始化,alter online table重新同步写入数据就行。
二、日常备份和恢复
cluster的备份命令非常容易,在管理上执行:
mgmd>start backup
语法:
START BACKUP [backup_id] [wait_option] [snapshot_option]
文档我就不抄了。控制台会显示当前备份的简要信息,如:哪个开始备份等。你也可以指定具体哪个开始备份。cluster的备份数据存放在每个数据的数据目录下,从1开始,每次备份产生一个备份目录,形如:BACKUP-备份id。在不指定的情况下,每个会依次备份。cluster的备份是在线的,不闭塞的,这样我们在备份时完全不用担心会造成数据库堵塞。恢复数据同样简单,我们在每个数据(注意:是每个数据,不是其中某一个)发出如下指令:
shell>/opt/soft/mysql/bin/ndb_resotre -c "管理IP:1186" -n id -b 备份id -r 就行,如果不想记binlog日志,可以加上--no-binlog参数,全部参数列表请参考文档。
在上文,我强调要在每个数据执行作,但是,这只是为保险起见,事实上,在最少情况下,只需要在相同组的任意一个各作一次就行。例如,如上图典型的4数据集群,node1和2属于node group1,node3和4属于node group2,在恢复时,我们只需要在node1和node3上各执行一次恢复指令就行了。其个中原因,大家可以再看图多思考就会明白。
三、在线扩展
Mysql cluster宣称可以在业务量大大增长时,在线添加以适应业务需求。方法如下:
(注:以下192.168.0.10是管理IP)
1.添加一个[ndbd]并在config.ini里加入
2.停掉mgmd : 10 stop 再重启 ndb_mgmd -f config.ini --reload (这里10是管理的id)
3.在已存在的数据上rolling restart :
mgmd>原数据ID1 restart
mgmd>原数据ID2 restart如果你是使用我之前那种方式启动的MySQL,那么你只需要去你相关联的宿主机的配置文件夹里面去建立一个 myf 然后写入上面的类容就好了。
可以在ndb.nodes表检查确认所有的数据使用了新的配置
mysqladmin -uroot -ppassword shutdown
mysqld_safe --ndbcluster --ndb-connectstring=192.168.0.10 &
5.在新上执行初始化启动
ndbd -c 192.168.0.10 --initial
mgmd>CREATE NODEGROUP 3,4
7.再分配集群数据,对每个表执行一次
ALTER ONLINE TABLE tbl REORIZE PARTITION.
如果数据量很大,这个过程比较慢,请耐心等待。(如果要数落cluster的不足,我认为在线添加数据算是一个)
四、Replication
今天,Mysql的replication异步技术已经相当成熟,使用也非常频繁。cluster同样对replication提供了支持。配置非常简单,仅需在cluster中任意一台myql上启用binlog,作为,然后在从库上不启用ndb引擎,其他配置和mysqld之间的replication完全一样。这里需要注意的一点是,你的binlog_format需要设置为STATEMENT,一定不要设置为MIXED,否则你的触发器将会令你的同步出错。这可能是cluster的一个bug,我没有深究。
mysql支持多用户同时读写吗
首先,进行状态测试:mysql支持多用户同时读写,mysql是一个关系型数据库管理系统。
1:mysql中的锁机制就是为了解决共享资源的问题,当我们需要对一个数据读取的时候就需要获取读锁同理当我们需要对数据进行修改的时候就需要获取写锁,读取和写锁之间是互斥的。
2:mysql为了从不同程度上控制资源读写,相应引入全局锁,表级锁,行锁以及不同的锁类型。
数据库是支持多用户访问的,因此需要一种机制保证多个用户同时读取和修改数据时,数据不会被破坏或者失效。在MySQL中,使用锁来保证并发连接情况下的数据准确性。
InnoDB中的锁定技术往往是基于索引实现的,如果SQL中没有利用到索引的话,往往会执行全表扫描,触发表锁。所以从效率上来说,我们应该建立合适的索引,减少锁的数据行提高并发。
从锁的粒度上来说,可以将锁分为表锁和行锁;我们主要讨论行锁的应用。
从行锁的角度上来说,InnoDB存储引擎实现了两种标准的行级锁,共享锁(读锁)和排他锁(写锁)。
共享锁:当一个事务获取了rpl_semi_sync__enabled=1某行数据的共享锁后,其他事务依然可以对这行数据加共享锁,但是不能加排他锁。
排他锁:当一个事务获取了某行数据的排他锁后,其他事务不可以对这行数据加任何锁。
从锁的范围来说,行锁还可以分成record lock、gap lock、next-key lock。
record lock:索引的记录锁,是建立在索引记录上的,如果没有索引的情况,往往会触发表锁。
gap lock:加在索引记录间隙上的锁。
mysql支持多用户同时读写吗当然是支持多用户同时读写的,这款软件的话还是相当的不错,可以支持多用户同时读写的。
mysql支持多用户同时读写吗
支持
数据库是支持多用户访问的,因此需要一种机制保证多个用户同时读取和修改数据时,数据不会被破坏或者失效。在MySQL中,使用锁来保证并发连接情况下的数据准确性。
本发明公开了一种支持多用户同时读写的 网盘系统构建方法。网盘系统包括网盘装 置、网盘客户端装置及网络装置;网盘系统中文 件的文件数据
常见的MySQL高可用方案(最全)
1. 概述
我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面:
如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。
用作备份、只读副本等功能的非主的数据应该和主的数据实时或者最终保持一致。
当业务发生数据库切换时,切换前后的数据库内容应当一致,不会因为数据缺失或者数据不一致而影响业务。
关于对高可用的分级在这里我们不做详细的讨论,这里只讨论常用高可用方案的优缺点以及高可用方案的选型。
2.1. 主从或主主半同步
使用双数据库,搭建单向或者双向的半同步。在5.7以后的版本中,由于lossless replication、logical多线程等一些列新特性的引入,使得MySQL原生半同步更加可靠。
常见架构如下:
架构比较简单,使用原生半同步作为数据同步的依据;
双,没有主机宕机后的选主问题,直接切换即可;
双,需求资源少,部署简单;
缺点:
完全依赖于半同步,如果半同步退化为异步,数据一致性无法得到保证;
需要额外考虑haproxy、keepalived的高可用机制。
2.2. 半同步优化
半同步机制是可靠的。如果半同步一直是生效的,那么便可以认为数据是一致的。但是由于网络波动等一些客观原因,导致半同步发生超时而切换为异步,那么这时便不能保证数据的一致性。所以尽可能的保证半同步,便可提高数据的一致性。
该方案同样使用双架构,但是在原有半同的基础上做了功能上的优化,使半同步的机制变得更加可靠。
可参考的优化方案如下:
2.2.1. 双通道
半同步由于发生超时后,断开,当再次建立起时,同时建立两条通道,其中一条半同步通道从当前位置开始,保证从机知道当前主机执行的进度。另外一条异步通道开始追补从机落后的数据。当异步通道追赶到半同步的起始位置时,恢复半同步。
2.2.2. binlog文件
搭建两条半同步复sync_relay_log=1制通道,其中连接文件的半同步通道正常情况下不启用,当主从的半同步发生网络问题退化后,启动与文件的半同步通道。当主从半同步恢复后,关闭与文件的半同步通道。
双,需求资源少,部署简单;
架构简单,没有选主的问题,直接切换即可;
相比于原生,优化后的半同步更能保证数据的一致性。
缺点:
需要修改内核源码或者使用mysql通信协议。需要对源码有一定的了解,并能做一定程度的二次开发。
2.3. 高可用架构优化
将双数据库扩展到多数据库,或者多数据库集群。可以根据自己的需要选择一主两从、一主多从或者多主多从的集群。
由于半同步,存在接收到一个从机的成功应答即认为半同步成功的特性,所以多从半同步的可靠性要优于单从半同步的可靠性。并且多同时宕机的几率也要小于单宕机的几率,所以多架构在一定程度上可以认为高可用性是好于双架构。
但是由于数据库数量较多,所以需要数据库管理软件来保证数据库的可维护性。可以选择MMM、MHA或者各个版本的proxy等等。常见方案如下:
2.3.1. MHA+多集群
MHA Mar会定时探测集群中的,当出现故障时,它可以自动将数据的sle提升为新的,然后将所有其他的sle重新指向新的,整个故障转移过程对应用程序完全透明。
MHA Node运行在每台MySQL上,主要作用是切换时处理二进制日志,确保切换尽量少丢数据。
MHA也可以扩展到如下的多集群:
可以进行故障的自动检测和转移;
可扩展性较好,可以根据需要扩展MySQL的数量和结构;
相比于双的MySQL,三/多的MySQL发生不可用的概率更低
缺点:
至少需要三,相对于双需要更多的资源;
逻辑较为复杂,发生故障后排查问题,定位问题更加困难;
数据一致性仍然靠原生半同步保证,仍然存在数据不一致的风险;
可能因为网络分区发生脑裂现象;
2.3.2. zookeeper+proxy
Zookeeper使用分布式算法保证集群数据的一致性,使用zookeeper可以有效的保证proxy的高可用性,可以较好的避免网络分区现象的产生。
较好的保证了整个系统的高可用性,包括proxy、MySQL;
扩展性较好,可以扩展为大规模集群;
缺点:
数据一致性仍然依赖于原生的mysql半同步;
引入zk,整个系统的逻辑变得更加复杂;
共享存储实现了数据库和存储设备的解耦,不同数据库之间的数据同步不再依赖于MySQL的原生功能,而是通过磁盘数据同步的手段,来保证数据的一致性。
SAN的概念是允许存储设备和处理器()之间建立直接的高速网络(与LAN相比)连接,通过这种连接实现数据的集中式存储。常用架构如下:
使用共享存储时,MySQL能够正常挂载文件系统并作,如果主库发生宕机,备库可以挂载相同的文件系统,保证主库和备库使用相同的数据。
两即可,2.4. 共享存储部署简单,切换逻辑简单;
很好的保证数据的强一致性;
不会因为MySQL的逻辑错误发生数据不一致的情况;
缺点:
需要考虑共享存储的高可用;
价格昂贵;
2.4.2. DRBD磁盘
DRBD是一种基于软件、基于网络的块存储解决方案,主要用于对之间的磁盘、分区、逻辑卷等进行数据镜像,当用户将数据写入本地磁盘时,还会将数据发送到网络中另一台主机的磁盘上,这样的本地主机(主)与远程主机(备)的数据就可以保证实时同步。常用架构如下:
当本地主机出现问题,远程主机上还保留着一份相同的数据,可以继续使用,保证了数据的安全。
DRBD是linux内核模块实现的快级别的同步技术,可以与SAN达到相同的共享存储效果。
两即可,部署简单,切换逻辑简单;
相比于SAN储存网络,价格低廉;
保证数据的强一致性;
缺点:
对io性能影响较大;
从库不提供读作;
2.5. 分布式协议
分布式协议可以很好解决数据一致性问题。比较常见的方案如下:
2.5.1. MySQL cluster
MySQL cluster是集群的部署方案,通过使用NDB存储引擎实时备份冗余数据,实现数据库的高可用性和数据一致性。
可以实现数据的强一致性;
缺点:
国内使用的较少;
配置较复杂,需要使用NDB储存引擎,与MySQL常规引擎存在一定异;
2.5.2. Galera
基于Galera的MySQL高可用集群, 是多主数据同步的MySQL集群解决方案,使用简单,没有单点故障,可用性高。常见架构如下:
多主写入,无延迟,能保证数据强一致性;
有成熟的社区,有互联网公司在大规模的使用;
自动故障转移,自动添加、剔除;
缺点:
需要为原生MySQL打wsrep补丁
只支持innodb储存引擎
2.5.3. POAXS
Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。这个算法被认为是同类算法中最有效的。Paxos与MySQL相结合可以实现在分布式的MySQL数据的强一致性。常见架构如下:
多主写入,无延迟,能保证数据强一致性;
有成熟理论基础;
自动故障转移,自动添加、剔除;
缺点:
只支持innodb储存引擎
3. 总结
随着人们对数据一致性的要求不断的提高,越来越多的方法被尝试用来解决分布式数据一致性的问题,如MySQL自身的优化、MySQL集群架构的优化、Paxos、Raft、2PC算法的引入等等。
而使用分布式算法用来解决MySQL数据库数据一致性的问题的方法,也越来越被人们所接受,一系列成熟的产品如PhxSQL、MariaDB Galera Cluster、Percona XtraDB Cluster等越来越多的被大规模使用。
随着MySQL Group Replication的GA,使用分布式协议来解决数据一致性问题已经成为了主流的方向。期望越来越多的解决方案被提出,MySQL高可用问题可以被更好的解决。
什么情况会导致MySQL主从延迟
也可以采用万里开源软件有限公司的集群解决方案,后端使用开源的MySQL存储数据,优点是有任何问题他们都可以帮忙解决,而且不用担心系统后续的扩展、集群高可用等情况,他们的工程师还开发过MySQL核心代码,找他们可以睡个安稳觉,缺点是不免费,他们还有自己的国产数据库GreatDB,兼容MySQL。Asynchronous Replication Automatic failover
其原理是在一条异步通道上配置多个可用源,当某个源不可用时(宕机、链路中断),且 sle 的 IO 线程尝试重连无效,自动根据权重选择新的源继续同步。 准备一个 MGR 集群和单实例,模拟链路切换,当 primary 故障,sle 自动切换到其他。dbdeployer deploy replication --topology=group 8.0.22 --single-primarydbdeployer deploy single 8.0.22
2. 在从机上建立指向 MGR 主的通道, 2. 高可用方案 change to _user='msandbox',_password='msandbox', _host='127.0.0.1',_auto_ition=1,source_connection_auto_failover=1,_port=23223,_retry_count=6,_connect_retry=10 for channel 'mgr-single';
3. 在从机上配置 asynchronous connection auto failover
配置 asynchronous connection auto failover 的两个函数:
asynchronous_connection_failover_delete_source(channel-name,host,port,network-namespace)
权重值大的被优先级选择,可以配合MGR的选举权重配置 asynchronous_connection_failover 的权重。当 MGR 切换,异步也能切换到新的主。
SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23223,null,100); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23224,null,80); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23225,null,50);start sle for channel 'mgr-single'; 4. 检查异步通道是否启用 failover。
mysql> SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM performance_schema.replication_connection_configuration; +--------------+---------------------------------+| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |+--------------+---------------------------------+| mgr-single | 1 |+--------------+---------------------------------+1 row in set (0.01 sec 5. 把 MGR 的 primary kill 掉,这个从会在尝试几轮重连失败后自动切换到次权重的源,其日志中会输出切换信息。
注意:当主故障,一旦链路成功 failover 后,在新的链路没有故障时,如果原主恢复,是不会回切的。如果当前链路发生故障,会再次选择权重高的进行切换
安全最重要!MySQL配置主从,主主
为了保障数据的安全与稳定性,我们常用数据库的主从与主主来实现。主从为从机实时拷贝一份主机的数据,当主机有数据变化时,从机的数据会跟着变,当从机数据有变化时,主机数据不变;同样地,主主就是,多个主机之间,只要有一个主机的数据变化了,其它主机在mysql中运行数据也会跟着变化。
添加以下内容
比如:我的启动命令如下(不应该换行的,这里为了方便查看,我给它分行了)
那么我只需要在 /docker/mysql_/conf 这个目录下创建 myf 文件就好了。
这个命令是需要在容器里面执行的
docker重启mysql会关闭容器,我们需要重启容器。
确保在主上 skip_networking 选项处于 OFF 关闭状态, 这是默认值。 如果是启用的,则从站无法与主站通信,并且失败。
我的命令如下
在从配置连接到主的相关信息 (在容器里面的mysql执行)
上面代码的xxxxx你需要换成你的IP,docker 查看容器 IP 的命令如下:
启动的那个从的线程
测试的话,你可以在主里面,创建一个数据库,发现从里面也有了,就成功了。
如果你还想要一个从,那么你只需要按照上面配置从再配置一个就行了,新建的从,会自动保存主之前的数据。(测试结果) 如果你上面的主从搞定了,那么这个主主就很简单了。我们把上面的从也改成主
1)、修改上面的从的myf文件,和主的一样(注意这个server-id不能一样)然后重启 2)、在从里面创建一个用户创建命令一样(这里修改一下用户名可以改为 repl2) 3)、在之前的主里面运行下面这个代码
上面主要是教你怎么搭建一个MySQL集群,但是这里面还有很多其它的问题。也是我在学习过程中思考的问题,可能有的小伙伴上来看到文章长篇大论的看不下去,只想去实现这样一直集群功能,所以我就把问题写在下面了。
1)、MySQL的replication和pxc MySQL的集群方案有replication和pxc两种,上面是基于replication实现的。
replication: 异步,速度快,无法保证数据的一致性。 pxc: 同步,速度慢,多个集群之间是事务提交的数据一致性强。
2)、MySQL的replication数据同步的原理 我们在配置的时候开启了它的二进制日志,每次作数据库的时候都会更新到这个日志里面去。主从通过同步这个日志来保证数据的一致性。
3)、可否不同步全部的数据 可以配置,同步哪些数据库,甚至是哪些表。
4)、怎么关闭和开始同步
5)、我就我的理解画出了,主从、主从从、主主、的图。
往期:
利用Docker仅花1分钟时间安装好MySQL服务
Linux下MySQL 5.7的离线与在线安装(图文)
Linux下安装MySQL84.rolling restart所有的sql和api (如果有配置/etc/init.d/mysql.server restart也一样).0(收藏!)
mysql数据库集群中管理跟数据都连接上了[mysqld]没有连接上是什么问题呢
优点:3:mysql支持集群,一主多备,多主多备等,这样都能支持多用户同时读写这是因为你的SQL上的mydql服务没有启动起来,你可以通过以下命令来启动SQL上的mysql服务
/bin/mysqld_safe &
这个我知道,是不是开启SQL SQL服务开启之后监测不到啊!我上次等了半个小时就监测到了,次反应慢
如何配置MySQL集群在一台
install plugin rpl_semi_sync_sle soname 'semisync_sle.so';MySQL云数据库创建、配置与使用教程,五秒钟创建属于自己的mysql云数据库,申请地址:xmjar
如何配置MySQL集群在一台
装两个服务对于从同步数据稳定性问题,有以下解决方案:或用虚拟机
是这样的吗?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 836084111@qq.com 举报,一经查实,本站将立刻删除。