分类: LINUX
2018-09-05 09:09:53
搭建mysql主从
MySQL主服务器
mysql> create database kgcdb;
创建kgcdb数据库
mysql> insert into mysql.user(Host,User,Password) values('localhost','bakuser',password('123456'));
创建用户主从同步的用户bakuser.
grant replication slave on *.* to identified by '123456' with grant option
给备份用户授权。允许bakuser从 从服务器上登录到主服务器
flush privileges;
刷新系统授权表。
show databases;
查看数据库
use kgcdb;
进入kgcdb数据库
create table one(id int not null primary key,name char(20));
创建one表
修改主配置文件:
vim /etc/my.cnf
server-id=1(确认)
log-bin=mysql-bin(确认开启)
binlog-do-db=kgcdb(添加)
binlog-ignore-db=mysql(添加)
重新启动mysqld服务
mysqldump -uroot -p kgcdb > /tmp/kgcdbbak.sql
备份需要同步的数据库到从服务器上,让两天服务器的数据库处于同一起跑线。
scp /tmp/kgcdbbak.sql
把备份好的数据库文件远程传输给从服务器。
登录服务器,查看master状态
show master status;
从服务器:
验证可以使用bakuser登录到主服务器上。
创建一个同名的需要同步的数据库
create database kgcdb;
use kgcdb;
source /tmp/kgcdbbak.sql
退出MySQL环境,修改主配置文件
vim /etc/my.cnf
server-id=2(需要修改)
log-bin=mysql-bin(确定)
replicate-do-db=kgcdb(添加)
replicate-ignore-db=mysql(添加)
重新启动MySQL服务
登录MySQL环境
slave stop;
mysql> change master to
-> master_host='192.168.1.10',
-> master_user='bakuser',
-> master_password='123456',
-> master_log_file='mysql-bin.000004',
-> master_log_pos=107;
Query OK, 0 rows affected (0.03 sec)
mysql> slave start;
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.10
Master_User: bakuser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 107
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: kgcdb
Replicate_Ignore_DB: mysql
!!!!注意:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
一定要是两个Yes.
验证:在主服务器上的kgcdb数据库中创建一个新的表,然后到从数据库的kgcdb中查看是否有相同的表。