主服务器:192.168.217.143
从服务器:192.168.217.145
一.配置mysql主数据库#192.168.217.143
mysql -u root -p#进入控制台
>create database cesudb#建立数据库测速db
>insert into mysql.user(Host,User,Password)values(‘localhost‘,‘cesudbbak‘,password(‘123456‘));#创建mysql数据库主从同步用户cesudbbak,用户密码是123456。
>grant replication slave on *.* to‘cesudbbak‘@‘172.30.65.124‘ identified by ‘123456‘ with grant option;#授权cesudbbak用户正能在172.30.65.124的机器上访问主数据库并只有备份的权限。
>flush privileges;#刷新系统授权表
二.把Mysql主服务器192.168.217.143上的数据库 cesudb导入到Mysql从服务器192.168.217.145中
1.在主数据库中:
>flush tables with read lock;#数据库只读锁定命令,防止到处数据库的时候有数据写入。
导出数据库cesudb(在主终端中执行)
#mysqldump -u root -p --default-character-set=utf8 --opt -Q-R --skip-lock-tables cesudb > /home/cesudbbak.sql#需要在主数据库服务器的shell>下操作,把数据库cesudb导出到/home目录下并重新命名为cesudbbak.sql。
>unlock tables;#解除锁定,在mysql控制台执行
#scp cesudbbak.sql root@192.168.217.145:/home#到/home目录下把该文件传到从数据库192.168.217.145的/home目录下。
2.进入从数据库#192.168.217.145
mysql -uroot -p
>create database cesudb;#建立数据库cesudb
>use cesudb;使用数据库cesudb
>source /home/cesudbbak.sql#导入备份文件到数据库
#mysql -u cesudbbak -h 192.168.217.143 –p123456#测试在从数据库服务器上登陆数据库主服务器。该命令的执行要在shell>下面。
三.配置主数据库服务器192.168.217.143的vim/etc/my.cnf文件。
[mysqld]
server-id=1#需添加的行,该行制定为1表示主服务器
log-bin=mysql-bin#需添加的行,启动mysql二进制日志系统
binlog-do-db=cesudb#需添加的行,需要同步的数据库名,如有多个数据库可以重复添加此行
binlog-ignore-db=mysql#需添加的行,不同步mysql系统数据库
#service mysqldrestart#重启mysql服务
mysql -u root -p#进入mysql控制台
mysql> show variables like ‘server_id‘; #查看server_id的值是否为1
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.00 sec)
show master status#查看主服务器信息,出现以下类似的信息
mysql> show master status;
四.配置从数据库的/etc/my.cnf文件#192.168.217.145
[mysqld]
server-id=2#需添加的行,设置其值等于2,表示是从数据库
log-bin=mysql-bin#启动mysql二进制日志系统
replicate-do-db=cesudb#需要同步的数据库名,如果有多个数据库可以重复此参数,每个数据库一行
replicate-ignore-db=mysql#不同步mysql系统数据库
read_only#设置数据库只读
#service mysqld restart#重启数据库
mysql -u root -p#进入mysql控制台
mysql> show variables like ‘server_id‘; #看到id为2,表示正常
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 2 |
+---------------+-------+
1 row in set (0.00 sec)
>slave stop;#停止slave同步进程
mysql> changemaster to master_host=‘192.168.217.143‘,master_user=‘cesudbbak‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000004‘,master_log_pos=106;
>slave start;#开启slave同步进程
SHOW SLAVE STATUS\G#查看同步信息,会出现以下的同步信息
mysql> SHOW SLAVE STATUS\G
***************************1. row ***************************
Slave_IO_State: Waiting formaster to send event
Master_Host:192.168.217.143
Master_User: cesudbbak
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 106
Relay_Log_File:localhost-relay-bin.000002
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running:Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: cesudb
Replicate_Ignore_DB: mysq
出现2个yes,说明配置成功了
五.测试主从配置
1.在主数据库上建立一个测试表student
mysql> usecesudb;
Database changed
mysql> createtable student(
-> id int,
-> name char(10),
-> sex char(2));
Query OK, 0 rowsaffected (0.16 sec)
mysql> showtables;
+------------------+
| Tables_in_cesudb|
+------------------+
| student |
+------------------+
1 row in set(0.00 sec)
2.登录从数据库查看该表
mysql> use cesudb
mysql> showtables;
+------------------+
|Tables_in_cesudb |
+------------------+
| student |
+------------------+
1 row in set (0.00 sec)
本文出自 “勿忘初心” 博客,转载请与作者联系!
原文:http://wangjiatong.blog.51cto.com/11834370/1883144