mysql cluster 配置文件更新 怎么重启
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql cluster 配置文件更新 怎么重启相关的知识,希望对你有一定的参考价值。
一、定义mysql Cluster的TCP/IP连接
TCP/IP是MySQL集群用于建立连接的默认传输协议,正常情况下不需要定义连接。可使用“[TCP DEFAULT]”或“[TCP]”进行定义。
1. SendBufferMemory
TCP传输缓存。默认值为 256KB。
2. SendSignalId
通过网络传输消息ID。默认禁止该特性(取值: Y/N或1/0)。
3. Checksum
启用该参数将在所有消息置于发送缓冲之前,为所有参数计算校验和。默认禁止该特性(取值: Y/N或1/0)。
4. ReceiveBufferMemory
指定从TCP/IP Socket接收数据时所使用的缓冲大小。几乎不需要更改该参数的默认值,默认值为64KB。
二、定义数据结点默认行为
NoOfReplicas为必要参数,使用“[NDBD DEFAULT]”进行定义。
1. NoOfReplicas
定义集群中每个表保存的拷贝数,另外还指定结点组的大小。结点组指保存相同信息的结点集合。通常情况下不需要为该参数指定值。NoOfReplicas没有默认值,最大的可能值为 4。
三、定义管理服务器(MGM)
用于配置管理服务器的行为。下面的参数均可以被忽略,如果是这样,将使用其默认值。如果没有定义ExecuteOnComputer或HostName,则会指定为localhost。可使用“[NDB_MGMD]”定义单个管理结点的行为,也可使用“[NDB_MGMD DEFAULT]”定义多个管理结点的默认行为。
1. NodeId
集群中结点的唯一标识,取值 1~63。
2. HostName
指定结点主机名或IP。
3. ExecuteOnComputer
引用在“[COMPUTER]”部分中定义的计算机之一。
4. PortNumber
管理服务器监听端口(默认值: 2202)。
5. LogDestination
结点日志出处理方式,可取下述值:
5.1. CONSOLE
将日志输出到标准输出设备(stdout)。
5.2. SYSLOG:facility=syslog
将日志发送到syslog(系统日志)软设备,可能值:
auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, syslog
, user, uucp, local0, local12~7
5.3. FILE:filename=/var/log/mgmd.log,maxsize=1000000,maxfiles=6
讲日志输出到文件,可指定一下值:
filename:日志文件名称。
maxsize:日志文件最大尺寸,大于该尺寸时自动创建新日志文件。
maxfiles:日志文件最大数量。
6. ArbitrationRank
指定哪个结点扮演决策角色,只有MGM结点和SQL结点可以使用(默认值:1)。通常情况下,应将值设为 1,并将所有SQL结点设为 0,以MGM服务器作为决策程序。可取下述值之一:
0:该结点永远不用作决策。
1:该结点具有高优先级。
2:该结点具有低有限级。
7. ArbitrationDelay
指定管理服务器对决策请求的延迟时间,毫秒为单位,默认为 0。通常情况下不需要改变它。
8. DataDir
保存管理服务器输出文件的位置,包括日志,进程输出文件,以及程序的pid文件。对于日志文件,可通过设置LogDestination的FILE参数覆盖它。
四、定义数据结点(NDBD)
用于配置数据结点的行为。ExecuteOnComputer或HostName为必要参数。对于各种参数,可以使用后缀k、M或G指明单位。使用“[NDBD]”进行定义。
1. NodeId
启动结点时,可在命令行中分配ID(即数据结点ID),也能在配置文件中分配。
2. HostName
指定结点主机名或IP。
3. ExecuteOnComputer
引用在“[COMPUTER]”部分中定义的计算机之一。
4. DataDir
指定存放跟踪文件,日志文件,pid文件以及错误日志的目录。
5. BackupDataDir
指定存放备份的目录,默认为 FileSystemPath/BACKUP。
6. DataMemory
指定数据内存,默认值为 80MB,最小值 1MB,无大小限制。
7. IndexMemory
指定索引内存,默认值为 18MB,最小值 1MB,无大小限制。
8. MaxNoOfConcurrentTransactions
用于设定结点内可能的并发事务数,默认值为 4096。对于所有结点,必须将参数设置为相同的值。
9. MaxNoOfConcurrentOperations
设置能同时出现在更新阶段或同时锁定的记录数。默认值为 32768。
10. MaxNoOfLocalOperations
默认情况下,将按照1.1 * MaxNoOfConcurrentOperations计算该参数,它适合于具有很多并发事务,但不存在特大事务的系统。如果需要在某一时间处理特大事务,而且有很多结点,最好通过明确指定该参数以覆盖默认值。
11. MaxNoOfConcurrentIndexOperations
该参数的默认值为8192。只有在极其罕见的情况下,需要使用唯一性哈希索引执行极高的并行操作时,才有必要增大该值。如果确信该集群不需要高的并行操作,可以使用较小的值并节省内存。
12. MaxNoOfFiredTriggers
默认值是4000,它足以应付大多数情况。在某些情况下,如果认为在集群中对并行操作的要求并不高, 甚至还能降低它。
13. TransactionBufferMemory
该参数影响的内存用于跟踪更新索引表和读取唯一索引时执行的操作。该内存用于保存关于这类操作的键和列信息。几乎不需要更改该参数的默认值。
14. MaxNoOfConcurrentScans
该参数用于控制可在集群中执行的并行扫描的数量。默认值为256,最大值为500。
15. MaxNoOfLocalScans
如果很多扫描不是完全并行化的,指定本地扫描记录的数量。
16. BatchSizePerLocalScan
该参数用于计算锁定记录的数量。要想处理很多并发扫描操作,需要这类记录。默认值是64,该值与SQL结点中定义的 ScanBatchSize 关系密切。
17. LongMessageBuffer
用于在单个结点内和结点之间传递消息的内部缓冲。尽管几乎不需要改变它,但它仍是可配置的。默认情况下,它被设置为1MB。
18. NoOfFragmentLogFiles
设置结点的REDO日志文件的大小,默认值为 8。
19. MaxNoOfSavedMessages
设置跟踪文件的最大数,默认值为 25。
20. MaxNoOfAttributes
设置可在集群中定义的属性数量,默认值为 1000,最小值为 32。
21. MaxNoOfTables
设置集群中最大表对象数量。默认值为128,最小值为 8,最大值为 1600。
22. MaxNoOfOrderedIndexes
对于集群中的每个有序索引,会分配一个对象,用于描述索引的内容,以及它的存储片段。在默认情况下,每个如此定义的索引还定义了一个有序索引。每个唯一索引和主键都具有一个有序索引和一个哈希索引。MaxNoOfOrderedIndexes设置有序索引的总数,这是系统任何时候能够使用的有序索引的总数。这个参数的默认值是128。每个结点中的每个索引对象尺寸大约为10KB。
23. MaxNoOfUniqueHashIndexes
对于每个不是主键的唯一索引,会分配一个表,用于将唯一键映射至索引表的主键。在默认情况下,还会为每个唯一索引定义一个有序索引。想要避免这种情况,当定义唯一索引时,你还必须指定“USING HASH”选项。默认值是64。每个结点中的每个索引的尺寸大约为15KB。
24. MaxNoOfTriggers
该参数用于设置集群中触发器的最大数量。
25. LockPagesInMainMemory
对于很多操作系统,能够将进程锁定在内存中,以避免与磁盘的交换。使用它可以确保集群的实时特性。默认情况下,该特性是被禁止的(取值:Y/N或1/0)。
26. StopOnError
出现错误时,该参数指定NDBD进程是退出还是自动重启。默认情况下,该特性是启用的(取值:Y/N或1/0)。
27. Diskless
指定集群为“无磁盘”,意味着不会为表在磁盘上设立检查点,也不会记录任何日志。默认情况下,该特性是被禁止的(取值:Y/N或1/0)。
28. RestartOnErrorInsert
仅当编译为调试版时才能访问该特性。默认情况下,该特性是被禁止的。
29. TimeBetweenWatchDogCheck
指定监控线程检查的间隔。该参数以毫秒为单位,默认值为 4000 毫秒。
30. StartPartialTimeout
该参数指定了在调用集群初始化子程序之前,集群等待所有存储结点出现的时间。默认值为 30000 毫秒(0 表示无限超时)。
31. StartPartitionedTimeout
如果集群做好了启动准备,但仍可能处于隔离状态,集群将等待该超时时间结束。默认值为 60000 毫秒。
32. StartFailureTimeout
如果数据结点在该参数指定的时间内未完成其启动序列,结点启动将失败。如果将该参数设置为0,表示不采用数据结点超时。默认值为 60000 毫秒。
33. HeartbeatIntervalDbDb
每个数据结点发送心跳信号到SQL结点的间隔。默认值为 1500 毫秒。
34. HeartbeatIntervalDbApi
每个数据结点都会向每个MySQL服务器(SQL结点)发送心跳信号,以确保它们依然保持接触。如果一个MySQL服务器没能成功地及时发送一个心跳,那么就会将其声明为“失效”,在这种情况下,所有正在进行的事务都会结束,并且释放所有资源。SQL结点不能重连,直到由先前的MySQL实例所初始化的所有活动都已经结束为止。默认的时间间隔是1500毫秒(1.5秒)单个数据结点之间的这个时间间隔可以是不同的,因为每个数据结点都会监视与其连接的MySQL服务器,与所有其他的数据结点无关。
35. TimeBetweenLocalCheckpoints
该参数默认值为20。
36. TimeBetweenGlobalCheckpoints
该参数定义了全局检查点操作之间的时间间隔。默认值为 2000 毫秒。
37. TimeBetweenInactiveTransactionAbortCheck
该参数默认值为 1000 毫秒。
38. TransactionInactiveTimeout
如果事务目前未执行任何查询,而是等待进一步的用户输入,该参数指明了放弃事务之前用户能够等待的最长时间。默认值为 0。
39. TransactionDeadlockDetectionTimeout
该超时参数指明了放弃事务之前,事务协调器等候另一结点执行查询的时间。
40. NoOfDiskPagesToDiskAfterRestartTUP
该参数指定了执行本地检查点操作的速度,并能与NoOfFragmentLogFiles、DataMemory和IndexMemory一起使用。默认值是 40(每秒3.2MB的数据页)。
41. NoOfDiskPagesToDiskAfterRestartACC
该参数使用的单位与NoOfDiskPagesToDiskAfterRestartTUP的相同。工作方式也类似,但限制的是从索引内存进行的索引页写入速度。该参数的默认值为每秒20个索引内存页(1.6MB每秒)。
42. NoOfDiskPagesToDiskDuringRestartTUP
该参数涉及从数据内存写入的页。默认值是40(3.2MB每秒)。
43. NoOfDiskPagesToDiskDuringRestartACC
该参数默认值是20(1.6MB每秒)。
44. ArbitrationTimeout
指定数据结点等待决策程序对决策消息的回应的时间。默认值为 1000 毫秒。
45. UndoIndexBuffer
指定UNDO索引缓冲区大小。默认值为 2MB,最小值为1MB。
46. UndoDataBuffer
指定UNDO数据缓冲区大小。默认值为 16MB,最小值为1MB。
47. RedoBuffer
指定REDO数据缓冲区大小。默认值为 8MB,最小值为1MB。
48. LogLevelStartup
日志级别,用于进程启动过程中生成的事件。默认级别为 1。
49. LogLevelShutdown
日志级别,用于作为结点恰当关闭进程组成部分而生成的事件。默认级别为 0。
50. LogLevelStatistic
日志级别,用于统计事件,如主键法读取次数、更新数、插入数、与缓冲使用有关的信息等。默认级别为 0。
51. LogLevelCheckpoint
日志级别,用于由本地和全局检查点操作生成的事件。默认级别为 0。
52. LogLevelNodeRestart
日志级别,用于在结点重启过程中生成的事件。默认级别为 0。
53. LogLevelConnection
日志级别,用于由集群结点间的连接生成的事件。默认级别为 0。
54. LogLevelError
日志级别,用于由在整个集群内的错误和警告生成的事件。这类错误不会导致任何结点失败,但仍值得记录。默认级别为 0。
55. LogLevelInfo
日志级别,用于为集群的一般状态信息而生成的事件。默认级别为 0
56. BackupDataBufferSize
指定数据备份缓冲区大小。默认值为 2MB。
57. BackupLogBufferSize
指定日志备份缓冲区大小。默认值为 2MB。
58. BackupMemory
该参数是BackupDataBufferSize和BackupLogBufferSize之和。默认值是2MB + 2MB = 4MB。
59. BackupWriteSize
该参数指定了由备份日志缓冲和备份数据缓冲写入磁盘的消息大小。默认值为 32KB。
60. FileSystemPath
该参数指定了存放为元数据创建的所有文件、REDO日志、UNDO日志和数据文件目录。注意:在ndbd进程启动前,该目录必须已存在。
五、定义MySQL服务器(SQL)
定义用于访问集群数据的MySQL服务器(SQL结点)的行为。可使用“[MYSQLD]”定义单个SQL结点的行为,也可使用“[MYSQLD DEFAULT]”定义多个SQL结点的默认行为。
1. NodeId
集群中结点的唯一标识。取值 1~63。
2. HostName
指定结点主机名或IP。
3. ExecuteOnComputer
引用在“[COMPUTER]”部分中定义的计算机之一。
4. ArbitrationRank
对于正常配置,使用管理服务器作为决策程序。将管理服务器的ArbitrationRank设置为 1(默认),并将所有SQL结点的ArbitrationRank设置为 0。
5. ArbitrationDelay
指定管理服务器对决策请求的延迟时间,以毫秒为单位。默认为 0,通常情况下不需要改变它。
6. BatchByteSize
对于被转换为全表扫描或索引范围扫描的查询来说,以适当大小批量获取记录,可以获得最佳的性能。这个合适的尺寸既可以用记录数量(BatchSize)表示,也可以用字节数量(BatchByteSize)表示。实际的批量尺寸受这两个参数的限制。根据这个参数的设置方法,查询性能最多可以提高40%。该参数以字节为单位,默认值是 32KB。
7. BatchSize
该参数以字节为单位,默认值是 64,最大值为 992。
8. MaxScanBatchSize
指定从各数据结点发送的每批数据的大小,默认值是 256KB,最大值为 16MB。
六、配置文件示例
参考技术A参考官方的mysql-cluster-excerpt-5.6-en.pdf的P376,即上图的左边红框部分。
重启分为三步:
第一步
对于管理节点,按顺序执行以下操作重启管理节点:
1.使用ps -ef|grep mgm 找出管理节点进程,kill掉它;
2.更新config.ini配置文件;
3.使用/usr/sbin/ndb_mgmd --reload启动第一个管理节点。
注意:
(1)以上三步需要重复在所有管理节点上操作;
(2)如果有多个管理节点,无论是否还有其他参数,只有第一个启动的管理节点上才能使用--reload参数,其他管理节点的启动不要添加--reload参数。
第二步
对所有数据节点,执行以下操作重启数据节点:
1.连入任意一个管理节点,使用/usr/sbin/ndb_mgm命令进入控制台;
2.使用命令:[node_id] restart,重新启动所有的数据节点
第三步
对所有SQL节点,重复执行以下操作:
1. 确保有执行service命令的权限,执行以下命令重启SQL节点:service mysql restart
mysql-主从复制
1.主从简介
MySQL 的主从复制(Replication)至少需要两个MySQL服务(可以是同一台机器,也可以是不同机器之间进行)。
MySQL 数据库的主从复制方案,与使用scp/rsync等命令进行的文件级别复制类似,都是数据的远程传输。只不过MySQL的主从复制是其自带的功能,无需借助第三方工具,而且MySQL的主从复制并不是数据库磁盘上的文件直接拷贝,而是通过逻辑的binlog日志复制到要同步的服务器本地,然后由本地的线程读取日志里面的SQL语句,重新应用到MySQL 数据库中。
1.1 作用
- 可以实时灾备,用于故障切换;
- 读写分离,提供查询服务,实现负载均衡;
- 数据热备,避免影响业务。
1.2 形式
- 一主一从
- 主主复制
- 一主多从---扩展系统读取的性能,因为读是在从库读取的
- 多主一从---5.7开始支持
- 联级复制
2.主从复制原理
1.主数据库服务将所有写操作记录在binlog日志中,并产生log dump线程(接受到从数据库服务的I/O线程请求后将binlog日志发送给IO线程)
2.从服务器MySQL服务生成两个线程,一个是 I/O 线程,另一个是 SQL 线程。
3.从库 I/O 线程去请求主库的binlog日志,并将binlog日志中的文件写入relaylog(中继日志)中
4.从库的 SQL 线程会读取relaylog中的内容,并解析成具体的操作,来实现主从的操作一致,达到最终两个数据库数据一致的目的,这个过程为重放
3.主从配置
开启主从复制时,需使主从数据库数据一致(即全备后在从数据库恢复),否则在主操从库没有的数据时,从库复制功能会受到影响,直到重新设置从库记录主库的日志位置
参数
- 主库参数
参数 | 作用 |
---|---|
binlog | 开启二进制日志记录 |
server-id | 数据库服务唯一标识,主库id小于从库 |
innodb_flush_log_at_trx_commit | 0,表示提交事务后,重做日志不会写入日志文件 1,同步写入日志文件 2,异步写入日志文件 |
innodb_support_xa=1 | 确保二进制日志和innodb数据文件的同步 保证复制环境的数据一致 |
log_bin_index | 二进制日志索引名称 |
binlog_format | 二进制日志的类型 |
binlog_row_image | 二进制镜像保存量 |
binlog_do_db,binlog_ignore_db | 记录在二进制日志中和不记录在二进制日志中 |
replicate_do_db[table] | slave只重放指定的库/表 |
replicate_ignore_db[table] | slave忽略重放指定的库/表 |
replicate_wild_do_table | slave重放满足匹配的表 |
replicate_wild_ignore_table | slave忽略重放满足匹配条件的表 |
binlog_cache_size | 缓存还没刷新到磁盘的binlog日志 |
max_binlog_size | 二进制日志最大值 |
expire_logs_days | 二进制日志被保留的有效期 |
sync_binlog | 二进制日志刷新到磁盘频率 |
binlog_rows_query_log_events | 二进制日志基于行,用来指定额外的信息 |
- 从库参数
参数 | 作用 |
---|---|
relay_log | 从节点中继日志名 |
relay_log_index | 中继日志索引名称 |
replicate_do_db和replicate_ignore_db | 过滤那些会被应用到从节点 |
slave_skip_errors | 自动忽略指定错误,逗号分割 |
slave_exec_mode | 取值IDEMPOTENT,STRICE 是否自动忽略重复主键和主键找不到错误 |
log_slave_updates | 启动从节点的二进制日志 |
relay_log_purge | 如何清除中继日志文件,默认1 自动清理 |
read_only | 从库只读,SUPER权限用户除外 |
super_read_only | SUPER用户设置只读 |
skip_slave_start | 从节点跳过自动开启复制 |
sync_relay_log和sysnc_relay_log_info | 中继日志文件同步频率,默认10000 |
repost_host | 区别不同的从节点,SHOW SLAVE HOSTS查看 |
slave_max_allowed_packet | 从节点的SQL和IO线程允许最大的数据包容量 |
relay_log_recovery | 中继日志自动恢复,从库意外停止后使用 |
master_info_repository | slave master节点信息保留在位置,默认file |
relay_log_info_repository | 从节点信息slave保留在位置,默认file |
3.1主数据库
- vm1(192.168.225.129)
- 主库当前数据
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wisan_db |
+--------------------+
5 rows in set (0.01 sec)
mysql> show tables from wisan_db;
+--------------------+
| Tables_in_wisan_db |
+--------------------+
| student_info |
+--------------------+
1 row in set (0.00 sec)
mysql> select * from wisan_db.student_info;
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | wisan | 18 |
| 2 | fyj | 17 |
| 3 | flora | 19 |
| 4 | wang | 20 |
+----+-------+------+
4 rows in set (0.04 sec)
创建同步账号并授权给从数据库使用
##replication slave 为权限类型
##授权的同时创建用户
mysql> grant replication slave on *.* to ‘repli‘@‘192.168.225.130‘ identified by ‘123456‘;
Query OK, 0 rows affected, 1 warning (0.00 sec)
##查看repli用户的slave权限
mysql> select user,repl_slave_priv from mysql.user where user=‘repli‘;
+-------+-----------------+
| user | repl_slave_priv |
+-------+-----------------+
| repli | Y |
+-------+-----------------+
##刷新
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
配置主数据库
[root@vm1 ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/opt/mysql_data/data
socket=/tmp/mysql.sock
port=3306
pid-file=/opt/mysql_data/data/mysql.pid
user=mysql
skip-name-resolve
symbolic-links=0
server-id=10 ##数据库服务器标识,要求主库的id小于从库
log-bin=mysql-bin ##开启binlog日志
重启服务
[root@vm1 ~]# service mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
[root@vm1 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 80 *:3306 *:*
[root@vm1 ~]# ls /opt/mysql_data/data/
auto.cnf ibdata1 ib_logfile1 mysql mysql-bin.index performance_schema vm1.localdomain.err
ib_buffer_pool ib_logfile0 ibtmp1 mysql-bin.000001 mysql.pid sys wisan_db
[root@vm1 ~]#
查看主库状态
- 查看此时主库binlog记录的位置
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
3.2从数据库
- vm3(192.168.225.130)
配置文件
[root@vm3 ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/opt/mysql_data/data
socket=/tmp/mysql.sock
port=3306
pid-file=/opt/mysql_data/data/mysql.pid
user=mysql
skip-name-resolve
symbolic-links=0
server-id=20 ##数据库服务器标识,从库id大于主库
relay-log=mysql-relay-bin ##启用中继日志
重启数据库服务
[root@vm3 ~]# service mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
[root@vm3 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@vm3 ~]# ls /opt/mysql_data/data/
auto.cnf ib_logfile0 mysql sys
ib_buffer_pool ib_logfile1 mysql.pid vm3.localdomain.err
ibdata1 ibtmp1 performance_schema
配置并启动主从复制
mysql> change master to
-> master_host=‘192.168.225.129‘,
-> master_user=‘repli‘,
-> master_password=‘123456‘,
-> master_log_file=‘mysql-bin.000001‘,
-> master_log_pos=154;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
查看从库状态
mysql> show slave status G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.225.129
Master_User: repli
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 154
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes ##yes表示从库io启动成功
Slave_SQL_Running: Yes ##yes表示从库重放功能运行成功
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
......................................................
3.3主从复制测试
查看从库当前数据
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
主库更新数据
## 创建新数据库
mysql> create database country;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| country |
| mysql |
| performance_schema |
| sys |
| wisan_db |
+--------------------+
##创建新表
mysql> use country;
Database changed
mysql> create table id_name(
-> id int not null primary key auto_increment,
-> name varchar(100) not null
-> );
mysql> desc country.id_name;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> insert into id_name(name) values(‘CHINA‘),(‘The United States‘),(‘The United Kingdom‘),(‘Japan‘);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from country.id_name;
+----+--------------------+
| id | name |
+----+--------------------+
| 1 | CHINA |
| 2 | The United States |
| 3 | The United Kingdom |
| 4 | Japan |
+----+--------------------+
查看从库是否更新
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| country |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
mysql> show tables from country;
+-------------------+
| Tables_in_country |
+-------------------+
| id_name |
+-------------------+
1 row in set (0.01 sec)
mysql> select * from country.id_name;
+----+--------------------+
| id | name |
+----+--------------------+
| 1 | CHINA |
| 2 | The United States |
| 3 | The United Kingdom |
| 4 | Japan |
+----+--------------------+
4 rows in set (0.00 sec)
在主库更新从库没有的数据
mysql> show tables from wisan_db;
+--------------------+
| Tables_in_wisan_db |
+--------------------+
| student_info |
| student_score |
+--------------------+
2 rows in set (0.00 sec)
mysql> insert into wisan_db.student_info(name,age) value(‘hello‘,null);
Query OK, 1 row affected (0.00 sec)
mysql> select * from wisan_db.student_info;
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | wisan | 18 |
| 2 | fyj | 17 |
| 3 | flora | 19 |
| 4 | wang | 20 |
| 5 | hello | NULL |
+----+-------+------+
5 rows in set (0.00 sec)
查看从库数据
- 发现从库在复制时发生错误
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| country |
| mysql |
| performance_schema |
| sys |
+--------------------+
##查看状态
mysql> show slave status G;
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1146
Last_Error: Error executing row event: ‘Table ‘wisan_db.student_info‘ doesn‘t exist‘
Skip_Counter: 0
4确保主从数据库数据一致
- 此过程在开启主从复制功能之前完成
4.1主数据库
给数据库加上读锁
- 开启一个终端用于上读锁
- 当退出mysql时表示解锁
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.01 sec)
##其他终端更新数据时会卡住,直到解锁才会继续处理
mysql> insert into wisan_db.student_info(name,age) value(‘world‘,null);
全备主库
[root@vm1 ~]# mysqldump -uroot -p123456 --all-databases > /opt/database-backup/all-20201029.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@vm1 ~]# ls /opt/database-backup/
all-20201029.sql
发送给从数据库
[root@vm1 ~]# scp /opt/database-backup/all-20201029.sql root@192.168.225.130:/root/
root@192.168.225.130‘s password:
all-20201029.sql
解除锁表状态
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
[root@vm1 ~]#
4.2从数据库
恢复主库全备
[root@vm3 ~]# mysql -uroot -p123456 < /root/all-20201029.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@vm3 ~]# mysql -uroot -p123456
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| country |
| mysql |
| performance_schema |
| sys |
| wisan_db |
+--------------------+
mysql> select * from wisan_db.student_info;
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | wisan | 18 |
| 2 | fyj | 17 |
| 3 | flora | 19 |
| 4 | wang | 20 |
| 5 | hello | NULL |
+----+-------+------+
5 rows in set (0.00 sec)
mysql> select * from wisan_db.student_score;
Empty set (0.00 sec)
以上是关于mysql cluster 配置文件更新 怎么重启的主要内容,如果未能解决你的问题,请参考以下文章