亲测,方案可实现主从、主主(互为主从、双机热备)

主从、主主配置文件
my.cnf

[mysqld]
user=user123
default-storage-engine=INNODB
general_log=on
general_log_file='/var/log/mysql/general.log'
log_timestamps=system
character-set-server=utf8
#default_authentication_plugin=mysql_native_password
#主从-主主配置
# 集群中的唯一标识,集群机器各不同
server-id=10
# 开启bin-log日志,并为bin-log日志取个前缀名(有默认值可不写)
log-bin=mysql-bin-log
# 同步复制时过滤的库(主要将一些不需要备份/同步库写进来)
# 也可以通过binlog-do-db=xx1,xx2... 来指定要复制的目标库
binlog-ignore-db=mysql
# 指定bin-log日志的格式为混合模式(默认为statement)
binlog_format=mixed
# 设置单个binlog日志文件的最大容量
max_binlog_size=1024M
# 开启relay-log日志(同样可以指定前缀名)
relay_log=mysql-relay-log
# 开启存储过程、函数、触发器等内容的同步功能
log_bin_trust_function_creators=true
# 同步执行跳过一些错误码(防止同步写入时出现错误导致复制中断)
slave_skip_errors=1062
#慢查询日志配置
slow_query_log=1
slow_query_log_file =/var/log/mysql/mysql-slow.log
long_query_time=0.11
log_queries_not_using_indexes=1
[mysql]
character-set-server=utf8
[client]
default-character-set=utf8



主机
SHOW MASTER STATUS;
拿到主机的 File值:(mysql-bin-log.000003)和Position值:(1585);

从机
change master to master_host='master-IP',master_user='root',
master_password='xxxxxxx',master_port=3306,master_log_file='mysql-bin-log.000003',master_log_pos=1585;

start slave;
show slave status\G;

同步前迁移:
把主库的数据先迁移到从库,锁主库表,备份主库表,还原主库表到从库,开启主从同步之后的改变;

重置:
stop slave;
reset salve;
show slave status\G;

权限相关:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
CREATE USER 'user'@'your-IP' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'user'@'your-IP';
GRANT All privileges ON *.* TO 'user'@'your-IP';
FLUSH PRIVILEGES;