MySQL 5.6 Replication
打开mysql主页,满篇介绍mysql5.6版本有多好,多牛。后来浏览了5.6的更新说明,说是强化了replication,还有人测试开启replication对性能影响不大,不像以前,影
打开mysql主页,满篇介绍mysql5.6版本有多好,多牛。后来浏览了5.6的更新说明,说是强化了replication,还有人测试开启replication对性能影响不大,不像以前,影响性能明显。反而性能更好?那个叫mysql中国的网站测试说的。官网有说多线程啥的进行复制,好吧。我信了。
但是安装网上老的配置方法配置主从模式失败,服务器空间,服务起不来,说找不到pid什么文件,错误已经忘啦~~不好意思。
于是乎,在官方下载最新的安装文档...全英文...一口一口的啃。
终于在1个小时前配置好了,是双主互备模式。master==master.
整理下配置方法。
安装mysql5.6.9(源码下载那个网站没有提供最新的5.6.10版本,而我又不想装RPM包,你懂的)。安装在这里略过,只要看解压后里面的INSTALL文件安装提示来就可以了。
我把mysql安装到了/usr/local/mysql目录,装完之后,有个my.cnf在/usr/local/mysql目录下面。
这个就是配置文件了,打开一看,里面就有一行...
-----------------下面我们开始配置-------------
两台服务器:mysql-m1 192.168.0.140
mysql-m2 192.168.0.141
打开mysql-m1的my.cnf文件,添加如下代码:
binlog-format=ROW
log-slave-updates=true
gtid-mode=on # GTID only
enforce-gtid-consistency=true # GTID only
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
port=3306
log-bin=binlog
report-host=192.168.0.140
肯定有人好奇,为啥要加这些代码?
好吧,我也不知道,官方就这么说的。(开玩笑了)。我把个个参数的意思原汁原味的写出来:
• binlog-format: row-based replication is selected in order to test all of the MySQL 5.6
optimisations
• log-slave-updates, gtid-mode, enforce-gtid-consistency, report-port and
report-host: used to enable Global Transaction IDs and meet the associated prerequisites
• master-info-repository and relay-log-info-repository: are turned on to enable
the crash-safe binlog/slave functionality (storing the information in transactional tables rather
than flat files)
• sync-master-info: set to 1 to ensure that no information is lost
• slave-parallel-workers: sets the number of parallel threads to be used for applying
received replication events when this server acts as a slave. A value of 0 would turn off the
multithreaded slave functionality; if the machine has a lot of cores and you are using many
databases within the server then you may want to increase this value in order to better exploit
multi-threaded replication
• binlog-checksum, master-verify-checksum and slave-sql-verify-checksum:
used to enable all of the replication checksum checks
• binlog-rows-query-log-events: enables informational log events (specifically, the
original SQL query) in the binary log when using row-based replication – this makes
troubleshooting simpler
• log-bin: The server cannot act as a replication master unless binary logging is enabled. If
you wish to enable a slave to assume the role of master at some point in the future (i.e. in the
event of a failover or switchover), you also need to configure binary logging. Binary logging
must also be enabled on the slave(s) when using Global Transaction IDs.
• server-id: The server_id variable must be unique amongst all servers in the replication
topology and is represented by a positive integer value from 1 to 2
32
好了,上面的参数都知道什么意思了吧。
接下来,我们同样设置第二台服务器:
binlog-format=ROW
log-slave-updates=true
gtid-mode=on # GTID only
enforce-gtid-consistency=true # GTID only
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=2
report-port=3306
port=3306
log-bin=binlog
report-host=192.168.0.141
注意,server-id=2,另外,report-host也改下。
这两个配置文件改好之后重启服务器。
重启完服务器之后,登录第二台服务器mysql-m2
登录mysql
mysql -u root -p
输入完用户名和密码之后:
> CHANGE MASTER TO MASTER_HOST=192.168.0.140, MASTER_USER='repl_user',
MASTER_PASSWORD='billy';
> START SLAVE;
这样主从模式就做好了主-----》从
-----------------------------------
我们在第一台服务器上设置可远程登录账户:
先登录mysql服务器:
>Grant all privileges on *.* to 'admin'@'%' identified by '123456' with grant option;
红色字体分别为账户和密码。
同样的,第二台服务器也这么操作。
然后,我们在主服务器(mysql-m1)的test数据库下面建立一个表测试同步情况:
登录mysql服务器:mysql -u root -p
>use test;(装好后,mysql默认自带)。
>create table abc(a int,b int,c int);
创建好后插入数据。
>insert into abc values(1,2,3);
多执行几次
然后select * from abc;
查看数据插入进去了没有。(我后面有自己插入了几行)。
mysql> select * from acc;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 2 | 2 | 2 |
| 2 | 2 | 2 |
| 2 | 2 | 2 |
+------+------+------+
登录mysql-m2,查看是否有数据同步过来。
同步过来了就是ok的了。
-------------------------------------
官方的文档只说了主从模式,我查了一下,要做双主模式,必须开启log-slave-updates=true这个选项。
我看了看两台服务器的配置文件都有这个。
然后呢,我自己试了一下。
登录主服务器---mysql-m1
登录mysql ----mysql -u root -p
输入密码
执行:
> CHANGE MASTER TO MASTER_HOST=192.168.0.141, MASTER_USER='admin',
MASTER_PASSWORD='123456';
> START SLAVE;
没想到,真的就可以,没报错。
>show slave status\G;
两台服务器都能查询出来信息。
===================总结=================
官方这个文档我是明白了。
它让每个slave都有当master的机会,如果一个master宕机了,
执行:
> CHANGE MASTER TO MASTER_HOST=192.168.0.*, MASTER_USER='repl_user',
MASTER_PASSWORD='billy';
> START SLAVE;
这个操作,只要换个IP地址,可以把任何一台从机变成主机,当主机启动之后,再执行:
> CHANGE MASTER TO MASTER_HOST=192.168.0.MASTER_IP, MASTER_USER='repl_user',
MASTER_PASSWORD='billy';
> START SLAVE;
这样主从切换来回自如。
不过,香港虚拟主机,我真的不知道类似于heartbeat的功能有木有~~~~我不像业务中断,香港虚拟主机,难道要在master上面做heartbeat?
本文出自 “勇攀高峰” 博客,谢绝转载!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

MySQL and phpMyAdmin are powerful database management tools. 1) MySQL is used to create databases and tables, and to execute DML and SQL queries. 2) phpMyAdmin provides an intuitive interface for database management, table structure management, data operations and user permission management.

I encountered a tricky problem when developing a small application: the need to quickly integrate a lightweight database operation library. After trying multiple libraries, I found that they either have too much functionality or are not very compatible. Eventually, I found minii/db, a simplified version based on Yii2 that solved my problem perfectly.

Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages have advantages in their respective fields such as data analytics, enterprise applications, and system programming.

Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

The basic operations of MySQL include creating databases, tables, and using SQL to perform CRUD operations on data. 1. Create a database: CREATEDATABASEmy_first_db; 2. Create a table: CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY, titleVARCHAR(100)NOTNULL, authorVARCHAR(100)NOTNULL, published_yearINT); 3. Insert data: INSERTINTObooks(title, author, published_year)VA

MySQL efficiently manages structured data through table structure and SQL query, and implements inter-table relationships through foreign keys. 1. Define the data format and type when creating a table. 2. Use foreign keys to establish relationships between tables. 3. Improve performance through indexing and query optimization. 4. Regularly backup and monitor databases to ensure data security and performance optimization.
