Home Database Mysql Tutorial Mysql 5.6 双主配置 自动同步脚本_MySQL

Mysql 5.6 双主配置 自动同步脚本_MySQL

Jun 01, 2016 pm 01:26 PM

bitsCN.com

# 最近有项目应用到了 mysql 双主结构,现在贴出来共享

# mysql 版本: 5.6.11

# 操作系统版本: rhel 6.2

# Master 的 my.cnf 配置( 只贴M/M 结构部分)

 

log-bin=fabianserver-id=1binlog-do-db=TSCbinlog-do-db=adbbinlog-ignore-db=mysqlreplicate-do-db=TSCreplicate-do-db=adbreplicate-ignore-db=mysqllog-slave-updatesslave-skip-errors=allauto_increment_increment=2auto_increment_offset=1
Copy after login

# Slave 的my.cnf 配置(只贴M/M结构部分)

log-bin=fabianserver-id=2binlog-do-db=TSCbinlog-do-db=adbbinlog-ignore-db=mysqlreplicate-do-db=TSCreplicate-do-db=adbreplicate-ignore-db=mysqllog-slave-updatesslave-skip-errors=allauto_increment_increment=2auto_increment_offset=2
Copy after login

对上面参数作出部分解释:

log-bin=fabian                             #M/S 需开启log-bin 日记文件server-id=1                                #指定server-id 必须不一致,M/s 结构时 M > Sbinlog-do-db=TSC                           #同步数据库名称binlog-ignore-db=mysql                     #忽略数据名称replicate-do-db=TSC                        #用于控制slave来执行同步的行为replicate-ignore-db=mysql                  #用于控制slave来执行同步的行为log-slave-updates                          #把更新的记录写到二进制文件中slave-skip-errors=all                      #跳过错误,继续执行复制auto_increment_increment=2                 #设置主键单次增量auto_increment_offset=1                    #设置单次增量中主键的偏移量#expire_logs_days = 20                     #设置log-bin 超过多少天删除max-binlog-size= 512M# auto_increment_increment、auto_increment_offset 可以防止双主主键冲突问题
Copy after login

对开启权限、grant 这些基本的这里就不在详细说明,面贴出自动建立同步的gant 脚本,项目在生产过程中总会遇到Mysql 数据库服务器宕机等情况,可用以下脚本来重新构建Master -to-Master 环境。

#!/bin/bash # Setting Variables _REMOTEHOST=192.168.1.51  #远程主机IP _LOCALHOST=192.168.1.52   #本地主机IP _USER=root                #用户名 _REMOTEPASD=123456        #远程主机密码 _LOCALPASD=123456         #本地主机密码 _BASE=TSC _LF=`mysql -u root -h $_REMOTEHOST -p$_REMOTEPASD -e "show master status/G;" | awk &#39;/File/ {print $2}&#39;` _LLF=`mysql -u root -p$_LOCALPASD -e "show master status/G;" | awk &#39;/File/ {print $2}&#39;` _PS=`mysql -u root -h $_REMOTEHOST -p$_REMOTEPASD -e "show master status/G;" | awk &#39;/Position/ {print $2}&#39;` _LPS=`mysql -u root -p$_LOCALPASD -e "show master status/G;" | awk &#39;/Position/ {print $2}&#39;`# Backup Mysql mysqldump -u root -h $_REMOTEHOST -p$_REMOTEPASD  $_BASE > $_BASE.sqlmysql -u root -p$_LOCALPASD $_BASE < $_BASE.sqlrm -rf $_BASE.sqlmysql -uroot -p$_LOCALPASD -e "stop slave;"mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "stop slave;"echo "mysql -uroot -p$_LOCALPASD -e +change master to master_REMOTEHOST=*${_REMOTEHOST}*,master_user=*${_USER}*,master_password=*${_REMOTEPASD}*,master_log_file=*${_LF}*,master_log_pos=${_PS};+" > tmpecho "mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e +change master to master_REMOTEHOST=*${_LOCALHOST}*,master_user=*${_USER}*,master_password=*${_LOCALPASD}*,master_log_file=*${_LLF}*,master_log_pos=${_LPS};+" > tmp2  sed -ri &#39;s//+/"/g&#39; tmp  sed -ri &#39;s//+/"/g&#39; tmp2  sed -ri "s//*//&#39;/g" tmp  sed -ri "s//*//&#39;/g" tmp2  sh tmp  sh tmp2  rm -rf tmp  rm -rf tmp2mysql -uroot -p$_LOCALPASD -e "start slave;"mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "start slave;"mysql -uroot -p$_LOCALPASD -e "show slave status/G;" | awk &#39;$0 ~/Host/ || $0 ~/State/&#39;mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "show slave status/G;" | awk &#39;$0 ~/Host/ || $0 ~/State/&#39;
Copy after login

#脚本执行完成后出现下图则表示成功:

[root@ORA2 fabian]# sh gant.sh Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.Warning: Using a password on the command line interface can be insecure.               Slave_IO_State: Queueing master event to the relay log                  Master_Host: 192.168.1.51      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update itWarning: Using a password on the command line interface can be insecure.               Slave_IO_State: Queueing master event to the relay log                  Master_Host: 192.168.1.52      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it[root@ORA2 fabian]# 
Copy after login

 

# 测试 master-to-master 是否成功要用 命令行界面或都三方工具(如 Navicat Premium) 进行对同步数据库进行测试,看是否在另一库进行同步操作。

至此完成!


bitsCN.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How do you alter a table in MySQL using the ALTER TABLE statement? How do you alter a table in MySQL using the ALTER TABLE statement? Mar 19, 2025 pm 03:51 PM

The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

How do I configure SSL/TLS encryption for MySQL connections? How do I configure SSL/TLS encryption for MySQL connections? Mar 18, 2025 pm 12:01 PM

Article discusses configuring SSL/TLS encryption for MySQL, including certificate generation and verification. Main issue is using self-signed certificates' security implications.[Character count: 159]

How do you handle large datasets in MySQL? How do you handle large datasets in MySQL? Mar 21, 2025 pm 12:15 PM

Article discusses strategies for handling large datasets in MySQL, including partitioning, sharding, indexing, and query optimization.

What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? Mar 21, 2025 pm 06:28 PM

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]

How do you drop a table in MySQL using the DROP TABLE statement? How do you drop a table in MySQL using the DROP TABLE statement? Mar 19, 2025 pm 03:52 PM

The article discusses dropping tables in MySQL using the DROP TABLE statement, emphasizing precautions and risks. It highlights that the action is irreversible without backups, detailing recovery methods and potential production environment hazards.

Explain InnoDB Full-Text Search capabilities. Explain InnoDB Full-Text Search capabilities. Apr 02, 2025 pm 06:09 PM

InnoDB's full-text search capabilities are very powerful, which can significantly improve database query efficiency and ability to process large amounts of text data. 1) InnoDB implements full-text search through inverted indexing, supporting basic and advanced search queries. 2) Use MATCH and AGAINST keywords to search, support Boolean mode and phrase search. 3) Optimization methods include using word segmentation technology, periodic rebuilding of indexes and adjusting cache size to improve performance and accuracy.

How do you represent relationships using foreign keys? How do you represent relationships using foreign keys? Mar 19, 2025 pm 03:48 PM

Article discusses using foreign keys to represent relationships in databases, focusing on best practices, data integrity, and common pitfalls to avoid.

How do you create indexes on JSON columns? How do you create indexes on JSON columns? Mar 21, 2025 pm 12:13 PM

The article discusses creating indexes on JSON columns in various databases like PostgreSQL, MySQL, and MongoDB to enhance query performance. It explains the syntax and benefits of indexing specific JSON paths, and lists supported database systems.

See all articles