主数据库
开启二进制日志
设置唯一id
获取二进制文件名和位置
创建用于通信的账号
从数据库
设置唯一id
使用分配的账号读取主数据库的二进制日志
两台服务器(虚拟机)并且安装mysql 不可以克隆mysql!
主数据库:192.168.0.106
从数据库:192.168.0.109
vim /etc/my.cnf
如果是宝塔安装的mysql就是 /www/server/mysql/my.cnf
根据自己的情况而定,总之就是【my.cnf】文件
#主服务器唯一ID(必须配置,必须唯一)
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个),一般就是mysql的系统数据库
# 如果加了 binlog-do-db 也可以选择不设置 binlog-ignore-db
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库(未创建的数据库)
binlog-do-db=需要复制的主数据库名字
#设置logbin格式(大写)
binlog_format=STATEMENT
systemctl stop mysql
systemctl start mysql
登录进入mysql
mysql -u root -p
执行sql语句
注意: 这里做练习 用户和密码相对简单,生产环境注意密码强度!
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123';
FLUSH PRIVILEGES;
select user from mysql.user where user = '你刚才创建的用户';
记录二进制文件名File和位置Position,后面配从库要用
执行sql:
show master status;
file:binlog日志的名字
Position :接入点 (从机从接入点开始复制)
Binlog_Do_DB :需要复制的数据库
Binlog_Ignore_DB :不需要复制的数据库
大同小异
vim /etc/my.cnf
如果是宝塔安装的mysql就是 /www/server/mysql/my.cnf
根据自己的情况而定,总之就是【my.cnf】文件
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
systemctl stop mysql
systemctl start mysql
登录进入mysql
mysql -u root -p
执行命令
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='用户名',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='binlog日志的名字,mysql-bin.具体数字',
MASTER_LOG_POS=接入点,具体的值;
stop 用户名;
reset master;
start slave;
4.查看从服务器状态
show slave status\G;
我的是这样的:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
表示成功!如果不是,就看报错信息,然后解决。
create database testdb;
use testdb;
create table mytab1(id int(11),name varchar(20));
insert into mytab1 values(1,'zhang3');
select * from mytab1;
show databases;
use testdb;
show tables;
select * from mytab1;
如何停止从服务复制功能
stop slave;
如何重新配置主从
stop slave;
reset master;
linux下搭建mysql多主多从
利用mycat读写分离