`
QING____
  • 浏览: 2264524 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql Replication配置项简述(二)

 
阅读更多

八、Replication主要配置项(配置文件)

    1、log_bin:指定binlog文件的名称,同时也表示开启binlog功能,在replication模式下,master上必须开启log_bin,如果slave不需要failover,可以不开启。文件将会放置在“datadir”目录下。

 

    2、binlog_checksum:是否开启binlog校验功能,在5.6.6+之后此值默认为“CRC32”,此前版本默认为“NONE”表示不开启校验和算法;用于控制master将每个变更操作写入binlog时是否携带checksum值,使用checksum可以在replication时,slave用于校验变更操作在网络传输时是否被破坏。

 

    3、binlog_format:可选值“MIXED”、“ROW”、“STATEMENT”,在5.6版本之前默认为“STATEMENT”,5.6之后默认为“MIXED”;因为“STATEMENT”方式在处理一些“不确定”性的方法时会造成数据不一致问题,我们建议使用“MIXED”或者“ROW”。

 

    4、sync_binlog:binlog文件刷新磁盘的时机,默认为“0”,表示binlog刷新磁盘的时机有操作系统决定,“1”表示每个变更操作写入binlog后立即刷新磁盘,这是最安全的方式,在crash时最多丢失一个“group”,当然也是磁盘效率最低的一种;其他任何大于0的数字,表示“多少次”变更操作写入binlog文件后执行flush。此值越大,对磁盘IO消耗越小,当回额外消耗内存,效率越高。

 

    5、binlog_row_image:可选值“full”、“minimal”、“noblob”,默认值为“full”,对“STATEMENT”复制模式无效;每个变更操作发生时,都有2个“image”,“before”表示变更前此行所有列的值,“after”表示变更后此行所有列的值;“full”表示在binlog中将会记录before和after的全部信息,易于排错,但是会导致日志量很大,对磁盘空间和网络传输都有一定的影响;“minimal”只记录before中能够唯一标记此行的列值,比如主键或者唯一索引键,在after中只记录那些有值变更的列;“noblob”类似于full,但是不记录那些没有变更的blob或者text类型的列。

 

    默认值为“full”,因为before和after均写入了binlog,所以通常不会带来问题;如果使用minimal或noblob,我们需要首先确保所有的表都有“主键”或者“唯一索引键”,且slave和master上的表结构完全一致,这样binlog只需要在before中记录能够唯一确定此行的的列即可,否则可能会引入数据不一致的问题。

 

    6、log_slave_updates:默认值为“FALSE”,slave在读取relay log后执行变更操作时,是否也将变更操作再次保存在本地的binlog中,就像变更操作在本地发生一样,开启此特性时也需要同时开启binlog。如果你的slave后端仍有其他slave跟进,需要开启此特性;比如A<-B<-C链状模式,A是B的master,B为C的master,因此A和B需要同时开启binlog和log_slave_updates,否则C将无法正常replication。

 

    7、max_binlog_size:binlog文件的大小,单位“字节”,默认为1G;即当binlog的尺寸大于此值时,将会滚动生成新的binlog文件,但是同一个事务将不会被分割在2个binlog文件中。如果没有设定“max_relay_log_size”配置项,那么此选项也会控制relay log的大小。

 

    8、log_bin_index:binlog索引文件名称,此文件记录当前所有正在使用的binlog文件列表。默认与binlog文件名一样,只是后缀为“<binlog-filename>.index”。

 

    9、expire_logs_days:binlog文件保存的天数,超过指定天数后,binlog历史文件将被删除;默认为“0”表示“不自动删除、永久保存”。通常我们建议不修改此值,即永久保存binlog日志,以备将来一旦数据操作失误时,可以用于恢复。如果磁盘空间有限,可以将binlog备份到其他存储平台,而在本地使用“PURGE BINARY LOGS”指令清除早期的binlog历史文件,释放磁盘空间。

 

    10、master_verify_checksum:master在读取binlog时是否校验,与“binlog_checksum”对应,默认为“false”即关闭。

 

    11、innodb_flush_log_at_trx_commit:innodb表中事务写入binlog后刷新磁盘的时机,配合“sync_binlog”参数使用,默认值为“1”表示每个事务提交后立即刷新binlog文件,是目前最安全的方式。“0”表示缓存事务,每隔1秒钟(innodb_flush_log_at_timeout控制)批量写入binlog并刷新一次磁盘,当crash时这种方式不能100%保证事务全部都写入磁盘,binlog中最多会丢失1秒内的事务。“2”表示事务提交后立即写入binlog文件,每隔一秒钟刷新一次磁盘,它和“1”并没有太大区别,只不过这个方式下操作系统也会影响文件的刷新时机。

 

    12、binlog_order_commits:默认为“true”,事务提交的顺序与写入binlog的顺序保持一致,即在事务提交时会锁定binlog并写入;如果关闭此特性,事务将会并发的提交,那么binlog中事务的顺序有可能与其实际提交的顺序不同,恢复replication带来一定的影响,不过这种方式会提升一定的并发性。

 

    13、server_id:当前mysql实例的id,整个replication中所有的实例的id都不能重复,而且每个server都必须配置此选项,此值是一个数字,integer型。


    14、relay_log:relay log的文件名,建议在master和slave上均配置。

 

    15、relay_log_index:relay log索引文件名称。

 

    16、relay_log_info_repository:可选值为“FILE”、“TABLE”,用于保存slave读取relay log的位置信息,以便crash重启后继续恢复;“FILE”表示将信息写入relay-log.info文件,“TABLE”表示将信息写入mysql.slave_relay_log_info表中。

 

    14、master_info_repository:可选值“FILE”、“TABLE”,将master的状态和链接信息保存何处,FILE则表示保存在master.info文件中,TABLE表示保存在mysql.slave_master_info表中。

 

    15、slave_net_timeout:slave与master链接IO超时的时间,超时后将会中断read,默认为3600。

 

    16、slave_parallel_workers:设置执行replication的worker线程的数量,默认为0,表示关闭多线程,此时slave只有一个SQL线程。如果开启多线程,slave中的SQL线程将作为worker线程池的“协调器”,SQL线程从relay log中读取变更操作记录,并以database为分离标准将操作分发给相应的workers线程,每个worker线程在一端时间内将持续执行一个database的变更操作,简单而言,就是不同的worker线程执行不同database的操作,多个database数据将在slave上被并行的执行,为了能够正确的工作,事务不能跨多个databases。

 

    此值用于控制worker线程的个数,“协调器”线程不包含在内,我们在slave上通过“SHOW PROCESSLIST”指令可以查看到SQL线程、worker线程的数据和状态。

 

    开启多线程时,并发执行会导致,在slaves上不同的databases被执行的时机可能与master上不同,归因于线程上线文的切换和CPU资源分配的不确定性;即一个事务执行后,不能保证此事务之前的其他事务(其他databases)也已经执行成功,这或许会对slave上binlog的记录、数据恢复和客户端数据访问带来影响。建议线程数为“database个数”,每个database一个worker线程;也有很多DBA将此值设置为2,即只用一个worker线程,这就不会带来事务顺序与master不一致的问题;需要强调的是,无论多少个线程,单个database的事务总是在一个worker中执行,单个database的事务顺序总是正确的。

    参见下文“slave_preserve_commit_order”。

 

    17、slave_pending_jobs_size_max:仅对多线程有效,SQL线程将变更操作读取后分发给worker线程,每个worker线程以队列的方式缓存亟待执行的变更操作记录,此处用于控制队列的大小,默认为16M,单位为“字节”;此值不得大于“max_allowed_packet”。

 

    18、slave_sql_verify_checksum:slave中SQL线程是否使用校验和检测relay log中的变更操作,与“binlog_checksum”配合,默认为“1”表示开启。

 

    19、slave_transaction_retries:如果SQL线程在执行事务时发生InnoDB死锁且等待超时后,slave重试的次数,默认为10,如果超过此次数,slave将会抛出error且终止replication;此值在“slave_parallel_workers”开启时无效,即为0,不重试。

 

    20、sync_relay_log:slave将多少条变更操作写入relay log后刷新磁盘文件,默认为10000;“0”表示刷新时机有操作系统决定,“1”表示每写入一条变更操作即立即刷新,是最安全的方式,不过因为relay log的安全级别与binlog还是要低一些,建议保持默认值,这通常也不会带来问题。

 

    21、gtid_mode:是否开启GTID特性,可选值为“ON”、“OFF”;在replication模式下我们应该开启。

    22、enforce_gtid_consistency:如果gtid_mode=ON,此值必须开启,可选值为“ON”、“OFF”,表示是否强制gtid的“一致性”避免并发操作。

    23、binlog_ignore_db:binlog中忽略的db,master与slave均可以配置,通常在master端。如果需要ignore多个databases,此配置允许声明多次,每次指定一个db。

    24、binlog_do_db:指定可以写入binlog的database名字,与binlog_ignore_db相反,只有指定的db才会写入binlog。此配置允许声明多次,每次指定一个db。(上述两个如果在slave上配置,可能还需要开启“log_slave_updates”,默认情况下,slaves端是不写binlog的)

    25、replicate_do_db:同上,只是在slave端生效,slave中的SQL线程在读取relay log时,会检测此变更操作所属DB,SQL线程只会执行此配置参数指定的db。如果不声明replicate_do_db,表示所有的db都会执行。此配置允许声明多次,每次指定一个db。与此配置项对应的还有“replicate_ignore_db=<db>”、“replicate_db_table=<db>.<table>”、“replicate_ignore_table=<db>.<table>”。

    26、read_only:当钱实例是否为“只读”模式,在此模式下除了具有“SUPER”权限的用户外,其他权限用户均不可以修改数据。SUPER权限包括(举例):CHANGE MASTER TO、KILL、SET GLOABL等。通常slave上,需要设定read_only=1以避免客户端意外修改数据,而造成数据错乱问题。默认为“0”(OFF)表示关闭。read_only并不会影响replication进程对数据的变更。

    30、super_read_only:对于具有SUPER权限的用户,是否也只读,默认为“0”(OFF)表示关闭。super_read_onl开启时,也会隐式的开启“read_only”参数。

    31、slave_preserve_commit_order:对于多线程slaves,来保障事务在slave上执行的顺序与relay log中的顺序严格一致,只有当“slave_parallel_workers”开启时有效;此时“log_bin”、“log_slave_updates”必须开启,而且“slave_parallel_type”值必须为“LOGICAL_CLOCK”(默认值为DATABASE)。即当多线程开启时,且根据relay log中事务的逻辑顺序执行statements,是否需要严格保持顺序,默认值为0表示并发执行忽略顺序。slave_parallel_type默认为DATABASE,原理参见18、,能够确保每个DATABASE中的事务顺序严格一致,但是无法保证所有databases的事务执行顺序也是严格一致的(gap),比如两个事务依次操作了2个DB:A和B,尽管事务A、B分别被worker X、Y线程接收,但是因为线程调度的问题,有可能导致A的执行时机落后于B。如果你的事务经常是“跨DB”操作,那么可以考虑使用此参数限定顺序。当此参数开启时,这要求任何worker线程执行的事务时,只有当前事务中此之前的所有事务都执行后(被其他worker线程执行),才能执行和提交。(每个事务中,都记录了当前GTID的privious GTID,只有privious GTID被提交后,当前GTID事务才能提交)

 

九、通用配置项(配置文件):下划线的参数表示系统变量,不能在配置文件中使用

    1、bind_address:绑定的网卡ip地址,默认为“0.0.0.0”,即绑定本机的所有网卡地址;每个机器至少包括内网IP和外网IP,如果此mysql只能被内网访问,那么请绑定在内网IP上。

    2、port:绑定的端口,默认为3306。

    3、pid_file:pid文件的名称。

    4、autocommit:是否开启事务自动提交模式,默认为“1”表示开启;如果为“0”,客户端需要声明事务提交的时机,“START TRANSCATION”、“COMMIT”、“ROLLBACK”等。

 

    5、bulk_insert_buffer_size:批量INSERT时的缓冲区大小,我们经常用“INSERT INTO ...VALUES(...),(...),(...)...”使用一条INSERT插入多行记录,此值用于控制buffer的最大容量,如果超过此值insert将会被拒绝,默认为8M,单位“字节”。

 

    6、character_set_server:为了避免乱码,建议上述值以及客户端使用的编码保持一致,我们通常选用兼容域更大的字符集,比如UTF8等。

 

    7、concurrent_insert:仅对MyISAM引擎有效,表示是否支持并发插入。“0”表示禁用并发插入;“1”表示没有空洞时支持并发插入,如果有空洞,就首先填充;“2”表示总是支持并发插入,即使表文件有空洞(holes),当表正在被其他线程执行INSERT时,新的INSERT将直接在表文件尾部插入,如果没有并发,才会填充空洞。所谓空洞就是表文件中因为数据删除,而遗留下的未被使用的空间。(因为innodb使用的是聚簇索引,所以也不存在并发插入的问题,insert总是在合适的位置被插入--通常为了提高性能,主键总是自增的,即insert总是在数据文件的尾部发生)

 

    8、connect_timeout:链接超时时间,默认为10秒。

    9、datadir:数据目录。

    10、default_storage_engine:默认值为“InnoDB”,如果你的数据库不需要事务支持,可以使用“MyISAM”作为默认引擎。引擎的类型也可以在创建table时指定。

 

    11、flush:每个变更操作执行后(即写入数据文件后)是否立即刷新磁盘,默认为“0”表示关闭,刷新时机有操作系统决定;如果你的数据库保存的数据非常重要,可以开启此值(值为1)。

    12、interactive_timeout:链接空闲的最长时间,单位“秒”,默认为28800(即8个小时);通常链接有客户端关闭,我们可以不用调整此值。

 

    13、key_buffer_size:MyISAM引擎中,内存中缓存索引的最大尺寸,单位“字节”,默认为8M;如果你的系统由较多的MyISAM表,且建立了索引,你可以通常增加此值来提高读取性能。

 

    14、lock_wait_timeout:尝试获取metadata锁时等待的最长时间,比如DDL操作,或者在DML语句中使用“LOCK TABLES”、“FLUSH TABLES WITH READ LOCK”等。单位“秒”。

    15、log_error:错误日志的文件名。

    16、log_output:可选值为“FILE”、“TABLE”,表示日志输出在哪里。

    17、long_query_time:如果一个query耗时超过此值,将被认定为“慢查询”,SQL语句将会被写入到慢查询log中。单位“秒”,默认值为10,通常这个值有些小,我们可以适度增加此值。

 

    18、lower_case_table_names:表名是否是大小写敏感的,默认为“0”表示区分大小写,“1”表示表名将以小写方式保存且在比较时大小写不敏感,“2”表示表名原样保存但是比较时不区分大小写。因为表名的大小写经常会带来麻烦,建议使用“1”或者“2”。

 

    19、max_allowed_packet:server与client单此交互所能接收、发送的最大数据集,单位“字节”,默认为4M。

    20、max_connections:所能支撑的最大连接数,默认为151,如果超过此值,将会拒绝链接且反馈“Too many connections”错误,对于production环境,此值显然有些小,建议修改为“65535”等,server所能支撑的最大连接数仍受限于本地系统最大文件描述符的个数,可以通过“ulimit”等方式调整。

 

    21、max_relay_log_size:原理基本同“max_binlog_size”,默认为“0”表示relay log的大小由“max_binlog_size”参数控制。单位“字节数”。

    22、preload_buffer_size:索引文件预加载到内存的大小,默认为32K,单位“字节”;建议增大此值。

    23、relay_log_purge:是否开启relay log自动清除功能,默认为“1”表示开启。

    24、report_host:在replication模式中,slave向master注册时告知的host名称,此值通常为slave的ip地址(建议与bind_address保持一致),仅供展示。

    25、report_port:通上,此值与port保持一致,仅供展示。

    26、report_user:replicaiton的用户名,此值可以不需要与实际使用的replication用户名一致,仅供展示。(在master上使用“SHOW SLAVE HOSTS”查看)

    27、rpl_semi_sync_master_enabled:是否在master上开启“半同步”replication特性,默认为“0”表示关闭;如果replicaiton集群中需要采用半同步机制,那么master上必须开启。(需要安装semisync_master插件)

    28、rpl_semi_sync_master_timeout:在半同步模式中,master将变更操作提交给“半同步”slave后,等待响应的最长时间,默认为10000,单位“毫秒”;如果超时,此master与此slave将转换成“异步”replication,直到此slave再次跟进为止。(需要安装semisync_master插件)

 

    29、rpl_semi_sync_master_wait_no_slave:在timeout期间,所有的slave都离线时,master是否继续等待,默认为“1”表示继续等待,“0”表示master不再等待,转换成异步replication模式。(需要安装semisync_master插件)

    39、rpl_semi_sync_slave_enabled:是否在slave上开启半同步模式,默认为“0”表示关闭。(需要安装semisync_slave插件)

    31、slow_query_log:是否开启“慢查询”日志功能,配合“long_query_time”参数。

    32、slow_query_log_file:指定慢查询日志文件的名称,默认为“<hostname>--slow.log”。

    33、socket:指定socket文件的路径和文件名,即unix socket file。

    35、thread_pool_size:5.6新增参数,用于设定线程池的大小,默认为16,最大不得超过64;线程池中的线程用户并行的接收和执行客户端的SQL语句,合适的线程池大小对性能有很大的提升。(5.7中移除了此选项)

 

    36、tx_isolation:事务的隔离级别,默认值为“REPEATABLE-READ”。(此参数为系统变量,不能在配置文件中声明)

    37、innodb_buffer_pool_size:innodb用缓存数据和索引的内存大小,默认为128M,单位“字节”,通常设定为内存总量的20%~80%之间。

    38、innodb_commit_concurrency:innodb允许多少个线程并发的提交事务,默认为“0”表示不限制线程并发数,允许的最大值为1000。(针对整个innodb层)

 

    39、innodb_thread_concurrency:innodb允许的最大并发线程数,默认为“0”表示不限制,最大值不得超过1000;如果并发线程数到达限定值,其他线程将会被加入等待队列,正在等待lock的线程不计为并发线程数。如果你要修改此值,需要经过测试和性能对比才能决定,如果你无法断定,可以将此值暂且设定为CPU的核数或者保持默认值。(针对整个innodb层)

 

    40、innodb_concurrency_tickets:innodb线程持有的tickets数量,默认值为5000。如果并发数达到上限,后续线程将会被添加到等待队列中(由innodb_thread_concurrency控制);当线程被允许进入innodb层后,会给此线程分配“innodb_concurrency_tickets”个tickets,线程可以自由进入innodb层直到tickets消耗完毕(进入即消耗),此后线程需要重新进行并发检查(innodb_thread_concurrency),有可能重新进入队列等待。

    较小的innodb_concurrency_tickets,对于只处理较少个操作的小事务影响不大,如果一个事务中需要多个操作,那么它需要多次访问innodb层,有可能会耗尽tickets,进而需要多次进行并发检查,这将导致事务的处理时间较长;如果你要减小此值,需要慎重考虑。

 

    41、innodb_doublewrite:是否开启“双写”特性,默认为“1”表示开启;双写就是数据变更首先写入“buffer”,然后再写入实际的数据文件(data files),可以提高数据完整性;不建议关闭!

 

    42、innodb_file_per_table:是否将不同的innodb表数据(数据和索引)保存在各自的.ibd文件中,而不是保存在系统表空间中;它的优点就是,当table被drop或者truncate时,此表的存储空间可以被回收;在5.6.6+版本之后,默认为“1”表示开启,此前版本默认为关闭。当关闭此特性时,InnoDB将所有的表和索引保存在系统表空间的idb文件中,这种存储方式对处理“drop”和“truncate”表时性能较低,因为删除表数据不会导致innodb数据文件的收缩,毕竟所有的innodb表共享底层存储文件空间。

 

    43、innodb_flush_log_at_timeout:默认值为1,单位“秒”,当“innodb_flush_log_at_trx_commit”值为0或者2时,表示binlog刷新的时间间隔。

 

    44、innodb_lock_wait_timeout:事务等待获取行锁的最长时间,默认为50,单位“秒”,一旦超时将会抛出timeout错误。这个参数不会应用在deadlock上,因为mysql有死锁检查,一旦发现死锁将立即回滚而不会等待。

    45、innodb_read_io_thread、innodb_write_io_thread:IO线程的个数,此值建议保持默认,如果你的系统是基于固态硬盘等更高速的存储设备,可以适当调大此值,默认值为4,最大为64。

    46、innodb_sort_buffer_size:排序时使用的内存量,默认为1m,单位“字节”,如果排序时内存需要量超过此值将会交换到文件中,对于线上环境,我们可以适度调大此值。

    47、innodb_support_xa:是否支持XA事务,默认为1表示支持。

 

十、单点部署配置文件样例

[mysqld]
#集群唯一ID
server_id=10
#绑定的IP地址,默认绑定所有网卡IP
#如果只希望本地网络访问,此值为“127.0.0.1”
#如果只希望局域网内访问,此值可以为局域网IP,例如“192.168.1.100”
#如果只希望外部网络访问,此值为其外网IP
bind_address=127.0.0.1
#绑定端口
port=3306
socket=/tmp/mysql.socket
#mysql的安装路径
basedir=/usr/local/mysql
#数据文件保存的目录
datadir=/data/mysql
#事务是否自动提交
autocommit=1
#字符集,为了避免乱码
character_set_server=utf8
collation_server=utf8_general_ci
#链接超时,单位“秒”
connect_timeout=30
#默认存储引擎
default_storage_engine=InnoDB
#每次写入操作执行后,是否立即刷新数据文件,默认为0
flush=1
#MyISAM索引内存大小,默认为8m
#线上环境,如果有大量MyISAM表和索引,建议根据物理内存量适度调大此值
key_buffer_size=128M
#批量insert中支持的最大缓存
bulk_insert_buffer_size=8M
#获取metadata锁的最长等到时间,DDL
#lock_wait_timeout=3600
#query耗时超过此值,将被认定为慢查询,默认10,单位“秒”
long_query_time=10
slow_query_log=1
#slow_query_log_file=slow-bin
#表名是否大小写敏感
lower_case_table_names=1
max_allowed_packet=16M
##支撑的最大连接数,默认为151
max_connections=65535
##relay log是否开启自动清除
join_buffer_size=128M
sort_buffer_size=4M
read_rnd_buffer_size=2M 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#innodb 参数
##innodb存储索引的内存量,默认为128M,单位“字节”
##如果环境中有大量innodb表和索引,
##建议根据内存总量适量调整此值,比如内存总量的20%~80%
innodb_buffer_pool_size=128M
##innodb允许事务并发提交的线程数,默认为0表示不限制
innodb_commit_concurrency=0
#innodb允许的最大并发线程池数(读、写)
innodb_thread_concurrency=64
innodb_concurrency_tickets=5000
#是否开启双写特性,默认1表示开启
innodb_doublewrite=1
innodb_file_per_table=1
#innodb事务提交与binlog刷新时机
innodb_flush_log_at_trx_commit=1
#上述值不为1时,此值控制间歇性刷盘的时间间隔
innodb_flush_log_at_timeout=1
#sort操作使用的内存,超过此值将会交换到文件中
innodb_sort_buffer_size=4M
#是否支持xa事务
innodb_support_xa=1

#binlog与replication,如下配置在单点模式下,也应配置
log_bin=my-binlog
binlog_checksum=CRC32
binlog_format=MIXED
sync_binlog=1
binlog_row_image=FULL
##slave上是否将执行的变更操作写入binlog
##如果slave是其他slave的master,需要开启
log_slave_updates=0
max_binlog_size=2G
binlog_order_commits=1
##binlog保存的时间,单位“天”
##自动删除早期的binlog文件
expire_logs_days=180
#开启GTID,强烈建议开启
gtid_mode=ON
enforce_gtid_consistency=ON

 

十一、Replication配置文件样例

#replication模式下选项
relay_log_purge=1
##当前实例的IP地址
report_host=192.168.1.100
##当前实例的端口
report_port=3306
##replication的用户账号名
report_user=rpl_sys
##slave上是否将执行的变更操作写入binlog
log_slave_updates=0
master_verify_checksum=1
relay_log=relay-bin
relay_log_info_repository=TABLE
sync_relay_log=1
master_info_repository=TABLE
#slave与master链接超时时间
slave_net_timeout=3600
##建议为database个数 + 1,或者简单为2
slave_parallel_workers=2
slave_sql_verify_checksum=1
##semisync配置需要首先安装“semisync_master”、“semisync_slave”才行
#rpl_semi_sync_master_enabled=1
#半同步,master等待slave确认消息的时间,单位“毫秒”
#rpl_semi_sync_master_timeout=10000
##当所有的半同步slave都离线时,master是否继续等待直到超时才转换成异步复制
#rpl_semi_sync_master_wait_no_slave=0
#rpl_semi_sync_slave_enabled=1

 

十二、MySQL安装部署简述(单点部署,非replication)

    1、本示例中使用压缩归档文件部署,下载任意版本tar.gz文件即可。(本例使用5.7.10)

    2、解压文件,并将文件拷贝到“/usr/local/mysql”目录下。

    3、然后在环境变量中增加MYSQL_HOME参数:

#/etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH

 

    4、我们将mysql的实际数据保存在“/data/mysql”目录下,此目录需要有当前操作用户的读写权限。

    5、将上述“单点部署配置文件示例”内容copy到配置文件中,名为“my.cnf”,文件的部分内容可以根据实际情况调整,此文件放置在安装目录下。需要注意,只有当前用户具有my.cnf文件的读取权限,否则将会在启动时抛出如下警告,而导致文件配置被忽略:

Warning: World-writable config file 'my.cnf' is ignored

 

    可以修改读取权限:“sudo chmod 644 my.cnf”。

    6、初始化mysql系统:

>sudo ./mysqld --datadir=/data/mysql --initialize --user=mysql

    此处的datadir需要与配置文件中的“datadir”保持一致,此后将会在此目录下生成mysql必要的系统数据,--user表示生成的文件使用的系统用户名,即使没有创建“mysql”系统用户也不会带来问题。

    7、启动mysql

>sudo ./mysqld_safe --defaults-file ../my.cnf --skip-grant-tables &

    首次启动,我们可以使用“--skip-grant-tables”,此参数表示访问database将不需要授权认证,我们可以不适用密码就能访问mysql,以便我们稍后修改root密码。

 

    8、访问mysql:

>sudo ./mysql --host=127.0.0.1 --port 3306 

 

    9、初始化root密码:在不同的版本中,初始root密码的方式有很大差异,5.7版本我们可以这么做:

>use mysql;
>UPDATE user SET authentication_string = PASSWORD('new-password'),
password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';
>FLUSH PRIVILEGES;

 

    10、关闭mysql并重新启动,但是此处将不再使用“--skip-grant-tables”因为我们需要密码授权才能访问系统,而且root用户已经初始化了,我们可以创建其他用户并授权。

>./mysqladmin --host=127.0.0.1 --port=3306 -u root --password=new-password shutdown;
>./mysqld_safe --defaults-file=../my.cnf &
##重新访问数据则需要密码
>./mysql --host=127.0.0.1 --port=3306 -u root --pasword=new-password

 

    11、新增mysql用户与授权

>use mysql;
#新增一个普通用户,可以操作mydb这个数据库的所有数据
>CREATE DATABASE mydb;
>GRANT ALL ON mydb.* TO 'test'@'%' IDENTIFIED BY 'test';
#新增一个rpl_sys,用于在replication模式中可以复制binlog数据
>GRANT REPLICATION SLAVE ON *.* TO 'rpl_sys'@'%' IDENTIFIED BY 'rpl_password';
>FLUSH PRIVILEGES;

##无论如何“mysql”这个系统数据库总是在replication时被ignore,因为这个数据库保存了很多当前instance的系统运行状态数据,因此它不能被replication到slaves中,所以用户权限需要在每个slaves上也要单独执行一次,否则会影响failover和replication。

 

上一篇:MySQL Replication原理

下一篇:MySQL Replication环境构建与运维

参考:

1、http://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html

2、http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html

3、http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html

4、http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

分享到:
评论
1 楼 wfmzz 2017-09-06  
17.17、slave_pending_jobs_size_max:此值不得大于“max_allowed_packet”

Important
The value for this option must not be less than the master's value for max_allowed_packet; otherwise a slave worker queue may become full while there remain events coming from the master to be processed.

相关推荐

    mysql主从配置

    2. **修改Master配置文件**:编辑`/etc/my.cnf`文件,在`[mysqld]`段落下添加或修改以下配置项: - `server_id`:设置服务器ID,一般设为IP地址。 - `binlog-do-db`:指定需要备份的数据库名称。 - `binlog-...

    mysql热备份

    - 在`my.cnf`配置文件的`[mysqld]`段中添加`log-bin`配置项。 ##### 2. 配置Slave 配置Slave节点时,需要指定Master的位置信息,如IP地址和端口等。此外,还需要配置从Master端获取日志的初始位置等细节。 ##### ...

    简述MySQL分片中快速数据迁移

    MySQL分片中的快速数据迁移是一项重要的任务,尤其在大型分布式数据库系统中,确保数据的完整性和业务的连续性至关重要。本文将深入探讨两种常见的迁移策略:利用`mysqldump`和MySQL的多源复制(Multi-Source ...

    AMESim仿真平台在电动汽车热泵空调系统设计与优化的应用解析

    内容概要:本文深入探讨了AMESim仿真平台在电动汽车(EV)热泵空调系统设计与优化中的应用。首先介绍了AMESim的基础建模方法,如构建制冷循环模型中的压缩机、蒸发器和冷凝器等组件,并详细解释了各部件的工作原理及其参数设定。接着重点阐述了EV热泵空调系统的特殊之处,即不仅能够制冷还可以在冬季提供高效的制热功能,这对于提高电动汽车在寒冷条件下的续航里程和乘坐舒适性非常重要。文中给出了几个具体的案例,包括通过改变压缩机运行频率来进行性能优化,以及针对低温环境下热泵系统的控制策略,如四通阀切换逻辑、电子膨胀阀开度调节等。此外,还讨论了热泵系统与其他子系统(如电池温控)之间的协同工作方式,强调了系统集成的重要性。最后分享了一些实用的经验技巧,例如如何避免仿真过程中可能出现的问题,怎样评估系统的整体性能等。 适合人群:从事汽车工程、暖通空调(HVAC)领域的研究人员和技术人员,特别是关注新能源汽车热管理系统的专业人士。 使用场景及目标:适用于希望深入了解电动汽车热泵空调系统特性的工程师们,旨在帮助他们掌握基于AMESim进行系统建模、仿真分析的方法论,以便更好地指导实际产品研发。 阅读建议:由于涉及到较多的专业术语和技术细节,建议读者具备一定的机械工程背景知识,同时配合官方文档或其他参考资料一起研读,以加深理解。

    dtcwt 双树复小波的matlab工具箱

    dtcwt 双树复小波的matlab工具箱。内容来源于网络分享,如有侵权请联系我删除。

    基于Hadoop的朴素贝叶斯分类(MapReduce实现).zip

    基于hadoop的系统

    永磁同步电机中电流预测控制与广义预测控制(速度环)的技术解析及应用

    内容概要:本文探讨了永磁同步电机(PMSM)控制系统中两种先进的控制策略:电流预测控制和广义预测控制(GPC),特别是在速度环中结合扩展状态观测器(ESO)的应用。文章首先介绍了广义预测控制的基本原理及其在速度环中的实现方式,强调了其通过滚动优化对未来系统输出进行预测的能力。接着讨论了电流环中采用的双矢量改进预测控制算法,该算法通过优化两个电压矢量的选择提高了电流控制的精度和动态响应速度。此外,文章还提供了具体的代码示例和技术细节,帮助读者更好地理解和实现这些控制策略。最后,推荐了几篇相关文献供进一步学习。 适合人群:从事电机控制领域的研究人员、工程师以及对预测控制感兴趣的高校师生。 使用场景及目标:适用于需要提高永磁同步电机控制系统性能的研究项目或工业应用场景,旨在实现更精确、高效的电机控制,增强系统的鲁棒性和稳定性。 其他说明:文中提到的方法已在实验室环境中进行了验证,并取得了显著的效果,如减小了突加负载时的速度跌落幅度,降低了电流谐波失真度等。同时,作者分享了一些实用的调试技巧和注意事项,有助于加速实际项目的开发进程。

    期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)

    期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目),个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作业Python实现基于图神经网络的信任评估项目源代码+使用说明(高分项目)期末作

    开源6轴机械臂控制器SmallRobotArm AR3:离线控制与运动学算法详解

    内容概要:本文详细介绍了开源6轴机械臂控制器SmallRobotArm AR3的功能特点和技术细节。首先,文章展示了AR3可以直接通过板载按钮进行关节和坐标运动控制,无需连接电脑,提供了便捷的操作体验。其次,深入探讨了其核心算法,包括正逆解算法、运动模式切换逻辑以及平滑处理机制。此外,还介绍了自动标定程序、G代码支持和扩展功能如手势控制等特性。最后,强调了AR3的高扩展性和易用性,使其成为机器人爱好者和专业开发者的理想选择。 适合人群:对机器人技术和机械臂感兴趣的初学者、中级开发者及研究人员。 使用场景及目标:适用于教育、科研、DIY项目等领域,旨在帮助用户快速掌握机械臂控制原理并应用于实际任务中。 其他说明:文中提供的代码片段有助于理解和实现相关功能,而详细的硬件介绍则为动手能力强的用户提供改装灵感。

    编程竞赛蓝桥杯Python模拟题集锦与解析:涵盖字符串处理、数字运算及算法设计

    内容概要:本文档提供了10道蓝桥杯Python模拟题及其详细解答过程,涵盖字符串处理、数字运算、算法设计等多个方面。题目包括数字反转、字母转换、数字分段和、质数判断、字符串统计、数独验证、最大子数组和、括号匹配、斐波那契数列和文件统计。每道题目不仅给出了详细的解题思路和分析,还附有完整的Python源代码。通过这些题目,读者可以系统地提升编程能力和算法思维,掌握常见的编程技巧和方法。 适合人群:适合有一定编程基础的Python学习者,特别是准备参加蓝桥杯或其他编程竞赛的学生和爱好者。 使用场景及目标:①作为蓝桥杯赛前训练资料,帮助参赛者熟悉比赛题型和解题思路;②作为编程练习题集,巩固Python语言的基础知识和常用算法;③通过实际编程练习,提高解决实际问题的能力和编程水平。 阅读建议:建议读者先尝试独立完成每道题目,然后再参考提供的解题思路和代码,对比自己的解法,找出差距并加以改进。同时,注意理解每道题目背后的算法思想和编程技巧,以便举一反三,灵活应用。

    web_6_login.rar

    web_6_login.rar

    AI插件实用脚本illustrator-scripts-master

    脚本插件 1.Ai转PS矢量图层 2.分割线段 3.图形变换 4.圆形填充 5.文字块排版 6.多页PDF文档置入 将jsx文件复制到\Abobe Illustrator XX\Presets(在部分AI软件中可能显示为“预设”)\zh_CN\脚本 文件夹下,重新启动ai,就可以在"文件"-"脚本"下看见ai脚本菜单,运行即可。

    嵌入式系统中滑模观测器与PLL的C代码实现及其在STM32F1平台的应用

    内容概要:本文详细介绍了滑模观测器和PLL在STM32F1平台上的C代码实现。滑模观测器用于估计系统内部状态,尤其适用于电机控制领域;PLL则用于确保输出信号相位与输入信号相位保持一致。文中展示了两种滑模观测器的实现方法:一种采用符号函数进行硬切换,另一种采用饱和函数进行软化处理。此外,文章还强调了使用TI的IQmath库进行定点计算加速,以提高运算效率并减少资源占用。通过具体的代码示例和调试技巧,作者分享了如何在STM32F1平台上实现高效稳定的滑模观测器和PLL系统。 适合人群:嵌入式系统开发者、电机控制系统工程师、熟悉C语言编程的技术人员。 使用场景及目标:① 实现高效的滑模观测器和PLL系统,应用于电机控制和其他实时性要求较高的场景;② 学习如何使用IQmath库进行定点计算加速,优化嵌入式系统的性能;③ 掌握调试技巧,确保系统稳定运行。 其他说明:文章提供了详细的代码示例和调试经验,帮助读者更好地理解和实现滑模观测器和PLL系统。同时,文中提到的一些注意事项和常见问题解决方案也非常实用。

    基于纳什谈判与ADMM的共享储能电站优化运行解决方案

    内容概要:本文探讨了利用纳什谈判理论和交替方向乘子法(ADMM)解决共享储能电站中多用户之间的利益分配问题。文中详细介绍了将复杂的利益分配问题转化为数学模型的方法,以及如何通过ADMM算法实现分布式优化,确保各参与方都能接受的最优解。同时,文章还展示了实际应用案例,证明了该方法的有效性和优越性。 适合人群:从事电力系统优化、储能技术研究的专业人士,以及对分布式优化算法感兴趣的科研人员。 使用场景及目标:适用于多个用户共同使用储能设施的场景,旨在通过科学合理的算法设计,实现储能系统的高效运行和利益的最大化分配。 其他说明:文章不仅提供了详细的算法实现步骤,还包括了一些实用的代码片段和实验结果分析,帮助读者更好地理解和应用相关技术。此外,文中提到的一些反直觉现象也为进一步的研究提供了思路。

    08011车TC1车ER(A、B网)通讯故障分析报告 .docx

    08011车TC1车ER(A、B网)通讯故障分析报告 .docx

    2025年机器人+人工智能工业应用研究报告.pdf

    2025年机器人+人工智能工业应用研究报告.pdf

    智能优化领域的麻雀搜索算法(DEH_SSA)改进及其Python实现

    内容概要:本文深入探讨了麻雀搜索算法(SSA)的一种改进版本——融合差分进化和多策略的麻雀搜索算法(DEH_SSA)。文章首先介绍了反向学习初始化种群、非线性因子改进发现者策略、改进警觉性策略、融合差分算法以及精英扰动策略五大创新点。接着详细展示了这些策略的具体实现方法,如反向学习初始化通过计算反向解使初始种群分布更合理,非线性因子改进发现者策略通过动态调整搜索步长提高搜索效率等。此外,文中提供了23个基准测试函数的实验结果,证明了DEH_SSA相比传统SSA在收敛速度和最优解质量上的显著优势。最后给出了详细的调参指南,帮助初学者更好地理解和应用该算法。 适合人群:对智能优化算法感兴趣的研究人员和技术开发者,尤其是有一定编程基础并对群体智能算法有初步了解的人士。 使用场景及目标:适用于需要解决复杂优化问题的场景,如工程优化、机器学习超参数调优等领域。目标是提供一种高效的优化工具,帮助用户更快更精确地找到全局最优解。 其他说明:文章不仅提供了理论解释,还有丰富的代码实例,便于读者动手实践。同时,附带的调参指南有助于读者根据具体问题调整算法参数,获得更好的优化效果。

    西门子WinCC报表系统多版本通用模板及优化技术详解

    内容概要:本文详细介绍了西门子WinCC报表系统的多版本通用模板及其优化技术。涵盖了日报表、月报表、年报表、自由报表及班次报表等多种类型的报表模板,提供了详细的代码示例,包括VBS脚本、SQL查询语句、C脚本等。文中强调了性能优化措施,如索引建立、参数化查询、存储过程的应用等,并附有配套的视频教程帮助理解和实践。此外,还讨论了班次报表的灵活性设计、数据分页技术、错误处理机制等方面的内容。 适合人群:已经具备WinCC脚本基础和SQL语言基础的技术人员,尤其是从事工业自动化领域的工程师。 使用场景及目标:适用于需要频繁生成各类生产报表的企业,旨在提高数据查询效率,满足不同客户的定制化需求,同时确保系统的稳定性和兼容性。通过学习本文提供的模板和技术,用户能够更好地应对复杂的生产数据管理和报表生成任务。 其他说明:文中提到的所有技术手段均经过实际测试验证,可在多个版本的WinCC环境中稳定运行。配套的视频教程进一步降低了学习门槛,使用户能够更快地上手操作。

    ANPC并网逆变器的SPWM控制与电流闭环仿真实现

    内容概要:本文详细介绍了ANPC并网逆变器的闭环仿真建模过程,涵盖了直流电压源的稳定接入、SPWM调制、电流闭环控制以及锁相环的应用。作者通过具体的代码示例和技术细节,展示了如何利用SPWM生成稳定的正弦波,通过锁相环确保电流和电压的相位一致,并采用前馈解耦提高电流控制的精度。同时,文中还讨论了一些常见的仿真问题及其解决方案,如死区效应、调制比限制和电流环PI参数的优化。 适合人群:电力电子工程师、控制系统设计师、从事逆变器研究的技术人员。 使用场景及目标:适用于希望深入了解ANPC并网逆变器控制策略的研究人员和工程师,旨在帮助他们掌握SPWM调制、电流闭环控制和锁相环的设计与实现。 其他说明:文章提供了丰富的代码片段和实践经验,有助于读者快速理解和应用相关技术。此外,文中提到的一些常见问题和解决方案也为实际项目提供了宝贵的参考。

    groovy-3.0.7.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

Global site tag (gtag.js) - Google Analytics