主机服务器:
1、
修改主机名称
# vi /etc/hostname
编辑内容 主机为master 从机为slave
退出
# hostname master
2、
开启3306端口
firewall-cmd --add-port=3306/tcp
启动MySQL:
service msyql start
如果报错PID file could not --------
查看mysql进程 :
ps -ef|gerp mysql
kill -9 进程号
授权外网ip可以连接:
grant all on *.* to 'root'@'%' identified by 'root';
3、修改主库配置文件
#vi /etc/my.conf
编辑文件
server-id=1
log-bin=mysql-bin
server-id的值是自己定的。这里就主机为1...,从机为5..., 这样方便区分识别。
4、重启
复机服务器:
通过navicat连接数据库,在主库查看Master信息
Show master status
5、将从库挂在到主库上,修改从库服务号
# vi /etc /my.cnf
编辑
server-id=5
6、重启
7、从节点挂载到主节点
在从表的可视化工具navicat上执行挂载语句:
/*配置注解 主机名/端口号/用户名/密码/二进制文件名称/同步的位置 */
CHANGE master to MASTER_HOST='10.100.10.10000',MASTER_PORT=3306,
MASTER_USER='root',MASTER_PASSWORD='root',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=120
启动从节点:
start slave
测试主从库是否有下面的两个yes状态
show slave status
1、同主从复制的主机服务器,操作两次
要点
主主复制中必须要解决的事情就是自增主键的问题。如果服务器1的数据库表1主键id增加到10了,此时二进制数据还没到达服务器2,如果服务器2对应的表恰好要插入数据,那么新数据主键id也是10。
2、修改主机master配置文件
# vi /etc/my.cnf
编辑:
log-bin=mysql-bin
server-id=1
replicate-do-db=test #要同步多个数据库,就多加几个replicate-db-db=数据库名
#binlog-ignore-db=mysql //要忽略的数据库
innodb_flush_log_at_trx_commit=1
sync_binlog=1
auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQL
3、重启
4、修改主机msaters配置文件
编辑:
server-id=2
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=test
5、重启
6、配置主库master的数据备份到主库masters
登录主库master,在主库master中添加一个主库masters(本人用的root账户)可以登录的备份账号
登录msyql添加MySQL访问账户
GRANT REPLICATION SLAVE ON *.* TO '账户'@'%' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;
7、在主库msater(214)中查看数据库master的状态
show master status;
8、在主库masters(216)如下操作
进入mysql
stop slave #这里要是之前有配置就先关闭
CHANGE MASTER TO
MASTER_HOST='数据库ip',
MASTER_USER='用户名',
MASTER_PASSWORD='密码',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000002', #主库master中的File
MASTER_LOG_POS=340; #主库master中的Position
mysql> start slave; #change后要start slave
在navicat中的上述操作
至此主机master的数据备份到主机masters完成,主机masters到master重复操作