当前我有一个mysql实例3306
[root@lzl ~]# service mysqld status
MySQL running (1782) [ OK ]
[root@lzl ~]# ps -ef|grep mysql
root 1603 1 0 Jul22 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/lzl.pid
mysql 1782 1603 0 Jul22 ? 00:00:46 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mysql.log --pid-file=/data/mysql/lzl.pid --socket=/tmp/mysql.sock --port=3306
我要搭一个mysql主从,需要安装备库,参数配置,备库数据初始化,开启主从同步
1.安装备库
1.1配置cnf
cnf配置:直接从主配置拷贝更改一些配置
主:/etc/my.cnf
[mysqld]
datadir = /data/mysql
socket = /tmp/mysql.sock
character_set_server = utf8
default-time-zone = '+08:00'
port = 3306
log-bin=master-bin
log-bin-index=master-bin.index
server-id=01
[mysqld_safe]
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysqld.pid
备:/etc/my3308.cnf
[mysqld]
basedir=/usr/local/mysql
datadir = /data/mysql3308
socket = /tmp/mysql3308sock
character_set_server = utf8
default-time-zone = '+08:00'
port = 3308
user=mysql
server-id=02
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
[mysqld_safe]
log-error=/data/mysql3308/mysql.log
pid-file=/data/mysql3308/mysqld.pid
basedir=/usr/local/mysql
user=mysql
1.2创建备库cnf配置中的目录
mkdir /data/mysql3308
chown mysql:mysql /data/mysql3308
1.3初始化
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my3308.cnf --initialize
1.4启动备库
mysqld_safe --defaults-file=/etc/my3308.cnf &
2 主备参数配置
2.1 配置master参数
[mysqld]
log-bin=master-bin
log-bin-index=master-bin.index
server-id=1001
重启3306 mysqld
2.2 配置slave参数
[mysqld]
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
server-id=1002
重启3308 mysqld
(可以用show variables like '%bin%'和show variables like '%server%'查看主从参数是否生效)
2.3 master创建用户
create user replicator@'%' identified by 'oracle';
grant select,replication slave,super,reload,replication client on *.* to replicator ;
flush privileges;
3 数据初始化
3.1 lock tables
登陆master库lock tables,禁止在导出阶段变更数据,保障数据一致性
mysql> flush tables with read lock; --窗口断开锁会释放
3.2 记录复制开始的位置
记录master的binlog文件和位置
show master status\G
*************************** 1. row ***************************
File: master-bin.000002
Position: 154
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
3.3 逻辑导出
mysqldump -A -h127.0.0.1 -P3306 -uroot -poracle>/tmp/source.sql
3.4 解锁表
unlock tables; --导出完成后就不必锁表了
4 slave搭建
4.1 备库导入初始化数据
mysql -h127.0.0.1 -P3308 -uroot -poracle</tmp/source.sql
4.2 change master
change master to
master_host='127.0.0.1',
master_port=3306,
master_user='replicator',
master_password='oracle',
master_log_file='master-bin.000002',
master_log_pos=154;
4.3 开启slave
start slave;
5 校验同步
备库登陆
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: replicator
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000002
Read_Master_Log_Pos: 154
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 321
Relay_Master_Log_File: master-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes