在一些企业网站中,后端Mysql 数据库只有一台时,会有以下问题 1)单点故障点,服务不可用 2)无法处理大量的并发数据请求 3)数据丢失
通过部署主从复制解决这一问题 1) 增加Mysql数据库服务器,对数据进行备份,形成主备 2)确保主备Mysql数据库服务器是一样的 3)主服务器宕机了,备份服务器继续工作,数据有保障
已关闭防火墙、核心防护、安装本地yum源、安装mysql数据库、安装ntp
1、设置时间同步(必须设置)
[root@localhost ~]# ntpdate ntp1.aliyun.com 20 Oct 16:41:19 ntpdate[15677]: the NTP socket is in use, exiting2、修改主配置文件
[root@localhost ~]# vi /etc/my.cnf .......省略内容 [mysqld] user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 character_set_server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket = /usr/local/mysql/mysql.sock secure-file-priv="" server-id = 11 ####修改主服务器的id号 log_bin = master-bin ####添加master中生成二进制日志的语句 log-slave-updates = true ####给从服务器授权同步,更新二进制日志文件 ...........省略内容 [root@localhost ~]# systemctl restart mysqld ###重启mysql3、登录 mysql 数据库给从服务器授权
[root@localhost ~]# mysql -uroot -p ......省略内容 mysql> grant replication slave on *.* to 'myslave'@'20.0.0.%' identified by '123456'; Query OK, 0 rows affected, 1 warning (0.01 sec) (允许20.0.0.%网段内的myslave 用户登录所有数据库、数据表) mysql> flush privileges; ####刷新,生成二进制日志文件 Query OK, 0 rows affected (0.00 sec) mysql> show master status; ####查看master的状态 +-------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +-------------------+----------+--------------+------------------+-------------------+ | master-bin.000013 | 751 | | | | +-------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)4、进入data目录下查看刷新出的二进制日志文件
[root@localhost ~]# ls /usr/local/mysql/data auth ib_logfile0 master-bin.000002 master-bin.000007 master-bin.000012 sys auto.cnf ib_logfile1 master-bin.000003 master-bin.000008 master-bin.000013 test bbs ibtmp1 master-bin.000004 master-bin.000009 master-bin.index ib_buffer_pool kfc master-bin.000005 master-bin.000010 mysql ibdata1 master-bin.000001 master-bin.000006 master-bin.000011 performance_schema1、设置时间同步(必须设置)
[root@localhost ~]# ntpdate ntp1.aliyun.com 20 Oct 16:41:28 ntpdate[46953]: the NTP socket is in use, exiting2、修改主配置文件
[root@localhost ~]# vi /etc/my.cnf .......省略内容 [mysqld] user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 character_set_server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket = /usr/local/mysql/mysql.sock server-id = 22 ####修改slave 的id号 relay-log = relay-log-bin ###添加,开启中继日志 relay-log-index = slave-relay-bin.index ####添加中继日志索引文件 ...........省略内容 [root@localhost ~]# systemctl restart mysqld ###重启mysql3、登录 slave 中的数据库,配置同步
[root@localhost ~]# mysql -uroot -p ......省略内容 mysql> change master to master_host='20.0.0.105',master_user='myslave',master_password='123456',master_log_file='master-bin.000013',master_log_pos=751; Query OK, 0 rows affected, 2 warnings (0.01 sec) mysql> start slave; Query OK, 0 rows affected (0.01 sec) mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 20.0.0.105 Master_User: myslave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000013 Read_Master_Log_Pos: 903 Relay_Log_File: relay-log-bin.000002 Relay_Log_Pos: 473 Relay_Master_Log_File: master-bin.000013 Slave_IO_Running: Yes Slave_SQL_Running: Yes ............省略内容1、设置时间同步(必须设置)
[root@localhost ~]# ntpdate ntp1.aliyun.com 20 Oct 16:41:32 ntpdate[46992]: the NTP socket is in use, exiting2、修改主配置文件
[root@localhost ~]# vi /etc/my.cnf .......省略内容 [mysqld] user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 character_set_server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket = /usr/local/mysql/mysql.sock server-id = 33 ####修改slave 的id号 relay-log = relay-log-bin ###添加,开启中继日志 relay-log-index = slave-relay-bin.index ####添加中继日志索引文件 ...........省略内容 [root@localhost ~]# systemctl restart mysqld ###重启mysql3、登录 slave 中的数据库,配置同步
[root@localhost ~]# mysql -uroot -p ......省略内容 mysql> change master to master_host='20.0.0.105',master_user='myslave',master_password='123456',master_log_file='master-bin.000013',master_log_pos=751; Query OK, 0 rows affected, 2 warnings (0.01 sec) mysql> start slave; Query OK, 0 rows affected (0.00 sec) mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 20.0.0.105 Master_User: myslave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000013 Read_Master_Log_Pos: 903 Relay_Log_File: relay-log-bin.000002 Relay_Log_Pos: 473 Relay_Master_Log_File: master-bin.000013 Slave_IO_Running: Yes Slave_SQL_Running: Yes ............省略内容1、在master主服务器上创建一个lookupme数据库 2、去slave从服务器验证有没有这个库
slave 20.0.0.106 slave 20.0.0.107 验证都有这个数据库,证明部署主从复制成功。---------------------------------------------------------------------到此结束。感谢浏览