Mysql如何配置主从数据库
当我们系统数据量比较大的时候,一台数据库服务器速度就比较慢了,影响性能,我们可以通过主从的方式来提高性能。配置了主从数据库之后,我们可以进行读写分离,insert、update操作在master上做,查询则在slave上。当一主一从不够的时候,我们还可以配置多个从库,这样就是一主多从,也就是MySQL集群。
当我们系统数据量比较大的时候,一台数据库服务器速度就比较慢了,影响性能,我们可以通过主从的方式来提高性能。配置了主从数据库之后,我们可以进行读写分离,insert
、update
操作在master
上做,查询则在slave
上。当一主一从不够的时候,我们还可以配置多个从库,这样就是一主多从,也就是MySQL集群。
Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。
在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。
下面我们来看看如何配置主从数据库:
1. 准备两台数据库服务器
master:192.168.9.119
slave:192.168.9.122
2. master配置
找到数据库配置文件my.cnf
vi /etc/my.cnf
开启二进制日志:
log-bin=mysql-bin
server-id=119
创建用于同步的账号并授权:
create user 'replicate'@'192.168.9.122' identified by 'slave';
grant replication slave on *.* to 'replicate'@'192.168.9.122';
flush privileges;
查看master状态,记录二进制文件名mysql-bin.000012
和位置120
:
show master status;
+------------------+----------+--------------+---------------------------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+---------------------------------------------+-------------------+
| mysql-bin.000012 | 120 | test | mysql,information_schema,performance_schema | |
+------------------+----------+--------------+---------------------------------------------+-------------------+
1 row in set (0.00 sec)
3. slave配置
找到数据库配置文件my.cnf
,添加配置
server-id=122
重启mysql服务器
service mysql restart
执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):
mysql> change master to
-> master_host='192.168.9.119',
-> master_user='replicate',
-> master_password='slave',
-> master_log_file='mysql-bin.000012',
-> master_log_pos=120;
启动slave同步进程:
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
查看slave状态:
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.9.119
Master_User: replicate
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000012
Read_Master_Log_Pos: 3374
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 3537
Relay_Master_Log_File: mysql-bin.000012
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 3374
Relay_Log_Space: 3714
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 119
Master_UUID: 59d3c4a8-1099-11e9-8f19-080027e17b36
Master_Info_File: /usr/local/mysql/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
至此,我们就完成了主从数据库的配置,快去试试吧。
评论啦~
暂无评论,快来抢沙发吧!