vim /etc/my.cnf
添加以下代码:
[mysqld]#这里如果已经配置过就忽略
basedir=/usr/local/mysql
datadir=/data/mysqldata
socket=/tmp/mysql.sock
user=mysql
port=3306
# master的配置
server-id=1 # 服务器id (设置唯一标识)
binlog-do-db=employees # 要给从机同步的库
binlog-ignore-db=mysql # 不给从机同步的库(多个写多行)
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
log-bin=mysql-bin # 打开日志(主机需要打开),可以指定绝对路径;
expire_logs_days=90 # 自动清理 90 天前的log文件,可根据需要修改
重启mysql服务:
cd /usr/local/mysql/bin #先切换到mysql的bin目录下
因为我们之前并没有将mysql服务添加到系统服务之中,所以必须要要到mysql的bin目录下启动服务
service mysql restart
服务重启过后,我们登陆mysql,并且查看log_bin是否成功开启:
./mysql -uroot -p密码
show variables like '%log_bin%';
显示为 on 则表示已经成功开启
grant replication slave on *.* to '账户名'@'从机ip' identified by '密码';
flush privileges;
select Host,User,authentication_string from mysql.user;
出现下面的数据就说明账户已经建立:
flush table with read lock; # 主库锁表;默认28800秒,即8小时自动解锁;
show master status \G
要和上面那一段一致.
/usr/local/mysql/bin/mysqldump -uroot -p密码 数据库名称 > /opt/数据库名称.sql (这里代表数据库脚本文件存在的位置)
yum install openssh-clients -y #相当开启ssh权限
scp /opt/数据库名称.sql root@从机ip地址 :/opt/
vim /etc/my.cnf
添加下面的代码:
[mysqld]#如果有已经添加过的,请忽略
basedir=/usr/local/mysql # mysql程序路径
datadir=/data/mysqldata # mysql数据目录
socket=/tmp/mysql.sock
user=mysql
port=3306
# slave配置
server-id=2 # MySQLid 后面2个从服务器需设置不同
skip_slave_start=1 # 复制进程不会随着数据库的启动而启动,重启数据库后需手动启动;
#加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。
read_only = 1 # 从库普通账户只读;
master_info_repository=TABLE
relay_log_info_repository=TABLE
#relay_log_recovery=1 # 从机禁止写
#super_read_only=1 # 从机禁止写
重启数据库并且登录:
service mysql restart
cd /usr/local/mysql/bin
./mysql -uroot -p密码
如果没有该数据库的话,需要新建数据库:
create database 数据库名称;
之后再/usr/local/mysql/bin路径下执行以下命令:
./mysql -uroot -p 数据库名称 < /opt/数据库名称.sql
这样就已经将数据库拷贝过来了,这是我们可以去Navicat里面查看,发现的确是已经拷贝过来了:
定制主数据库数据,如果不是第一次设置的,设置之前需要先停掉slave服务:
stop slave;
change master to
master_host='主服务器ip', # master的ip
master_user='同步账户', # 备份用户名
master_password='同步账户密码', # 密码
master_log_file='日志文件', # 三.3,且要与master的参数一致
master_log_pos=日志文件偏移量; # 三.3,且要与master的参数一致
#以上参数必须要和上面的参数保持一致!!!!!
之后我们启动slave服务
start slave;
show slave status \G #查看slave服务
恭喜你不出意外你会出现这样一个错误:
不用着急,这里我们只需要重新修改一下/etc/my.cnf文件即可,添加以下代码:
slave-skip-errors = 1032, 1062, 1007
并且重启我们的mysql服务,再重复一次上述的操作,我们就能看到下面这段美妙的画面了:
我们再去关闭以下 主数据库的读锁定 就行了.
unlock tables;
到这里我们的同步复制就已经配置完成了.
最后我们就只需要再来检测以下就行了.
主库操作:
use 数据库名称;
create table test001(id int auto_increment primary key,name varchar(20) not null);
insert into test001 values(null,'will');
insert into test001 values(null,'jim');
insert into test001 values(null,'tom');
select * from 数据库名称.test001;
从库操作:
use 数据库名称;
select * from 数据库名称.test001;
如果你的结果和上述截图一样的话,那么恭喜你,同步复制工作就已经配置好了.