设为首页 收藏本站
查看: 670|回复: 0

[经验分享] mysql 数据库主从同步配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-3-10 17:29:41 | 显示全部楼层 |阅读模式
数据库配置主从同步

一.配置mysql主数据库#172.30.65.122

mysql -u root -p#进入控制台

create database cesudb#建立数据库测速db

insert into mysql.user(Host,User,Password) values('localhost','cesuuser',password('123456'));#创建用户cesuuser,密码是123456

grant all on cesudb.* to 'cesuuser'@'172.30.65.169' identified by '123456' with grant option;#授予cesuuser的用户在nagios服务器172.30.65.169的机器上对cesudb的完全访问权限。

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主服务器172.30.65.122上的数据库 cesudb导入到Mysql从服务器172.30.65.124中

注意:在到处前可在控制台执行以下的命令

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@172.30.65.124:/home#到/home目录下把该文件传到从数据库172.30.65.124的/home目录下。

2.进入从数据库#172.30.65.124
mysql -uroot -p

create database cesudb;#建立数据库cesudb

use cesudb;使用数据库cesudb

source /home/cesudbbak.sql#导入备份文件到数据库

mysql -u cesudbbak -h 172.30.65.122 -p#测试在从数据库服务器172.30.65.124上登陆数据库主服务器172.30.65.122。该命令的执行要在shell>下面。

三.配置主数据库服务器172.30.65.122的my.cnf文件。

vim /etc/my.cnf#这里的本机的mysql是yum安装的,如果你是编译安装的需另行找到主配置文件并修改。
把该目录下的文件改为以下就可以了。
[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#需添加的行,该行制定为1表示主服务器
log-bin=mysql-bin#需添加的行,启动mysql二进制日志系统
binlog-do-db=cesudb#需添加的行,需要同步的数据库名,如有多个数据库可以重复添加此行
binlog-ignore-db=mysql#需添加的行,不同步mysql系统数据库
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

service mysqld restart#重启mysql服务

mysql -u root -p#进入mysql控制台

show variables like 'server_id';#查看server_id的值是否为1
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+
1 row in set (0.00 sec)

show master status#查看主服务器信息,出现以下类似的信息

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 |      106 | cesudb       | mysql            |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

注意:这里记住上面的File和Position的值,后面还会用到。

四.配置从数据库的my.cnf文件#172.30.65.124

vim /etc/my.cnf
修改为以下内容即可,该机器上的从数据库也是yum安装的,如自己机器上的数据库是编译安装的可以另行制定配置文件位置
[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=2#需添加的行,设置其值等于2,表示是从数据库
log-bin=mysql-bin#启动mysql二进制日志系统
replicate-do-db=cesudb#需要同步的数据库名,如果有多个数据库可以重复此参数,每个数据库一行
replicate-ignore-db=mysql#不同步mysql系统数据库
read_only#设置数据库只读
#bind-address=172.30.65.124
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

service mysqld restart#重启数据库

mysql -u root -p#进入mysql控制台

show variables like 'server_id';#看到id为2,表示正常
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 2     |
+---------------+-------+
1 row in set (0.00 sec)

slave stop;#停止slave同步进程

change master to master_host='172.30.65.122',master_user='cesudbbak',master_password='123456',master_log_file='mysql-bin.000006',master_log_pos=106;#执行同步语句,master_log_file和master_log_pos就是上面提到的那连个值
mysql> change master to master_host='172.30.65.122',master_user='cesudbbak',master_password='123456',master_log_file='mysql-bin.000006',master_log_pos=106;
Query OK, 0 rows affected (0.02 sec)

slave start;#开启slave同步进程

SHOW SLAVE STATUS\G#查看同步信息,会出现以下的同步信息
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.30.65.122
                  Master_User: cesudbbak
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000006
          Read_Master_Log_Pos: 106
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000006
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

              Replicate_Do_DB: cesudb
          Replicate_Ignore_DB: mysql
           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: 106
              Relay_Log_Space: 407
              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:
1 row in set (0.00 sec)
注意出现红色字体的部分,以上的连个参数出现yes代表配置成功。


五.测试主从配置


1.在主数据库上建立一个表student#172.30.65.122
mysql -u root -p

use cesudb;

create table ...#建一个测试表
mysql> create table student (
    -> id int,
    -> name char(10),
    -> sex char(2));
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+------------------+
| Tables_in_cesudb |
+------------------+
| student          |
+------------------+
1 row in set (0.00 sec)


2.登录从数据库查看该表#172.30.65.124

mysql> use cesudb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+------------------+
| Tables_in_cesudb |
+------------------+
| student          |
+------------------+
1 row in set (0.00 sec)

已经自动同步过来,说明同步成功。





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-189119-1-1.html 上篇帖子: mysql5.5.48 多实例配置及启动脚本 下篇帖子: mysql监控从库状态 数据库 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表