my.ini的mysqld节点添加以下配置
server-id=1
log-bin=mysql-bin
auto_increment_offset=1
auto_increment_increment=2
log-bin-trust-function-creators=1
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
log-error=\mysql.log
说明:
- port:将mysql启动端口设置(默认为3306)
- log_bin:启动mysql二进制日志,如果没有配置这个将无法远程链接
- binlog-ignore:指定不同步的数据库,如果有多个数据库不需要同步可以多个分别声明 mysql 5.6及以前
- binlog-ignore:指定不同步的数据库,如果有多个数据库不需要同步可以多个分别声明 mysql 5.7及以后
- character_set_server:指定utf8mb4为默认字符集
- server-id:可以为任意自然数,必须保证两台mysql主机不重复
- auto_increment_increment=2:步进值auto_imcrement。一般有n台主MySQL就填n
- auto_increment_offset:设定数据库中自动增长的起点,两台mysql的起点必须不同,这样才能避免两台服务器同步时出现主键冲突
- replicate-do-db:要同步的数据库,如果需要就填,指定数据库的名称即可,默认为所有库,声明了不同步就默认除了不同步数据库意外的所有库。这里我没写。
- log-bin-trust-function-creators=1 在默认情况下mysql会阻止主从同步的数据库function的创建,这会导致我们在导入sql文件时如果有创建function或者使用function的语句将会报错。
进入mysql相互授权:mysql -u -p
grant replication slave, replication client on *.* to 'dbuser'@'%' identified by 'db123'
flush privileges //刷新MySQL的系统权限相关表,否则会无法用账号链接
分别查看两台主机的日志节点
show master status
相互设置同步的日志节点
master_host='127.0.0.1',
master_port=3307,
master_user='dbuser',
master_password='db123',
master_log_file='mysql-bin.000003',
master_log_pos=154
#
change master to
master_host='127.0.0.1',
master_port=3308,
master_user='dbuser',
master_password='db123',
master_log_file='mysql-bin.000002',
master_log_pos=154
在两台主机上启动slave服务
start slave
查看状态
show slave status