|
master设置
0,查看是否开启binlog,登录mysql执行如下语句:
1
| mysql> SHOW MASTER LOGS;
|
或者:
1
| mysql> SHOW BINARY LOGS;
|
如果显示如下信息则表示没有开启:
1
| ERROR 1381 (HY000): You are not using binary logging
|
1,如果没有开启binlog,则需要开启binlog,首先停掉mysql服务器:
1
| shell> bin/mysqladmin -u root -p shutdown
|
编辑/etc/my.cnf在[mysqld]下添加如下:
1
2
3
4
5
| [mysqld]
log-bin=mysql-bin
server-id=1
innodb_flush_logc_at_trx_commit=1
sync_binlog=1
|
启动mysql服务器:
1
| shell> bin/mysql_safe --user=mysql &
|
2,创建复制用户
1
2
| mysql> CREATE USER 'repl'@'slave_ip' IDENTIFIED BY 'slavepass';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'slave_ip';
|
3,开启一个会话,刷新所有的表并且阻塞写操作
1
| mysql> FLUSH TABLES WITH READ LOCK;
|
4,开启另一个会话,确定binlog文件和位置,记录File和Position,slave需要用到。
1
| mysql > SHOW MASTER STATUS;
|
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+
5,如果源master内有数据则导出数据
1
| mysqldump --all-databases > data.sql
|
如果只导出几个苦可以使用--databases
6,释放写锁
slave配置:
0,停止MySQL:
1
| shell> bin/mysqladmin -u root -p shutdown
|
1,设置server_id,master和slave必须不同,如果有其他slave,也不能彼此相同。
2,启动MySQL并登陆,如果有数据导入数据:
1
2
| shell> bin/mysql_safe --user=mysql &
mysql> source /data.sql;
|
3,设置master信息:
1
2
| mysql> CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='repl', MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=73;
|
3,启动slave线程
|
|
|