首页 > 数据库技术 > 详细

mysql主从

时间:2016-12-16 02:01:18      阅读:219      评论:0      收藏:0      [点我收藏+]

主服务器: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.143vim/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)


本文出自 “勿忘初心” 博客,转载请与作者联系!

mysql主从

原文:http://wangjiatong.blog.51cto.com/11834370/1883144

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!