参考数据 高性能mysql p433.
主从同步
目的:数据分布,负载均衡,备份,高可用性和故障切换,数据库升级测试。
工作示意图:

步骤:
1.每台服务器上创建复制账号
登陆mysql,执行:
GRANT ALL ON *.* TO username@'10.100.0.%' IDENTIFIED BY 'password';
ALL :添加账户的权限,此处设计为全部权限都给,为之后的读写分离做准备,否则无法进行正常的数据库操作。
username:复制账号
password:密码
2.配置my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server_id = 1 #服务器id
log_bin = mysql-bin #打开二进制log用于复制
relay_log =/var/lib/mysql/mysql-relay-bin
log-slave-updates =1
read_only =1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
3.打开主服务器mysql,
查看:show master status\G
出现类似数据。
服务器配置完毕
打开从服务器mysql,
执行:
change master to master_host=’192.168.174.167′,
master_port=3306,
master_user=’repl’,
master_password=’foxconn’,
master_log_file=’mysql-bin.000001′,
master_log_pos=0;
master_host:主服务器ip,master_post:端口,master_user:用于复制用的账户,master_password:密码,master_log_file,对应之前所显示的日志文件,master_log_pos:开始复制的位置,从0开始意思是从日志的开头读起。
之后,执行:
show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: server1
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 4
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: No
Slave_SQL_Running: No
...omitted...
Seconds_Behind_Master: NULL
可以看到
Slave_IO_Running和Slave_SQL_Running是No
表明slave还没有开始复制过程。日志的位置为4而不是0,这是因为0只是日志文件的开始位置,并不是日志位置。实际上,MySQL知道的第一个事件的位置是4。
执行:
start slave;#开始复制 slave有start stop reset操作。
查看status,
Slave_IO_Running和Slave_SQL_Running是YES
OK ,已经开始复制了,可以在主服务器上执行一些操作测试,PASS。
读写分离
Slave_IO_Running和Slave_SQL_Running是YES
这里使用360家的阿特拉斯
github地址:https://github.com/Qihoo360/Atlas
这里,不多说了被,去看官方文档来的快。https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md
好啦,配置OK,服务也启动了,那就测试一把吧
此处要注意,我们之前访问的数据库现在应该转移到这台分发服务器了,访问分发服务器ip:port即可实现读写分离。
例如:$conn=mysql_connect("192.168.174.142:1234", "repl", "123456");ok,pass。
至此我们已经完成了服务器的负载均衡,数据库的读写分离,数据库的主从同步了。
架构如下:

浙公网安备 33010602011771号