Mysql主从配置

Mysql Replication,可以实现将数据从一台数据库服务器复制到另一台或者多台数据库服务器。默认情况下属于异步复制,无需维持长连接,通过配置,可以复制所有的库或者几个甚至其中一些表,并且这些功能都是mysql自带的。

mysql配置说明

下面以mysql实例1作为主库,mysql实例2作为从库,其中主库具有增删改查功能,而从库仅仅有查询功能。

修改配置文件

1
2
3
4
5
6
7
8
$cat > /etc/my.cnf

#主库配置
server-id=1
log-bin=mysql-bin

#从库配置
server-id=10

重启mysql服务

1
2
3
4
5
6
7
8
9
10
11
#杀死mysql服务
$kill -9 `ps -ef | grep mysql | grep -v grep | awk '{print $2}'`

#检查旧mysql服务是否被停止
$ps aux | grep mysql

#启动mysql多实例服务
$mysqld_multi start

#检查mysql多实例情况
$mysqld_multi report

配置主库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#登录主库mysql
$/usr/bin/mysql -S /data/mysqlsock/mysql.sock1 -p -uroot

#创建从库链接的用户,其中xxx为从库用户密码
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'xxx';

#授权从库登录用户,同步主库日志文件的权限,其中xxx为密码
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.10.10.1' IDENTIFIED BY 'xxx'

#查看主库状态,并记录File与Position的值
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 437 | | | |
+------------------+----------+--------------+------------------+-------------------+

#退出从库
mysql> exit;

配置从库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#登录从库
$/usr/bin/mysql -S /data/mysqlsock/mysql.sock2 -uroot -p

#配置从库
mysql> CHANGE MASTER TO MASTER_HOST='10.10.10.1', MASTER_USER='repl',MASTER_PASSWORD='xxx',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=437;

#启动从库
mysql> start slave;

#查看从库状态
mysql> show slave status\G;

#退出mysql
mysql> exit;