云服务器MySQL主从配置彻底解读

配置时环境:腾讯云服务器,云服务器上的MySQL5.7,未配置过主从,如环境不一致,请谨慎操做。个人Master主机(如下称主机)公网IP是119.29.234.4三、内网ip是10.104.190.222,Slave从机(如下称从机)的IP不用关心(主机设权限为全部IP均可以访问,使用”%“实现),请修改成你本身的并在下面代码包含公网IP的地方进行相应的修改。(蓝色字体是全部操做主机的命令步骤,绿色字体是操做从机的命令步骤,底部是供老鸟使用命令集合)mysql

腾讯云服务器如图所示:sql

具体步骤:数据库

1.登陆云服务器(如主机,从机未安装jdk和MySQL请操做2 3 ,否请跳过),下面是控制台用户命令操做vim

2.安装JDK:     安全

sudo apt-get install openjdk-8-jdk    服务器

y       测试

3.安装MySQL:    字体

sudo apt-get install mysql-server阿里云

    帐号:   root编码

    密码:   root

主机配置

4.1修改mysqld.cnf文件信息

cd /etc/mysql/mysql.conf.d/

sudo vim mysqld.cnf  此时打开mysqld.cnf出现大量信息

i  进入编辑模式

  一直操做向下箭头,找到信息底部白色的两行代码,这部分代码便是被注释的代码,如图:

 

删除#,修改binglog_do_db = db_zhanye_sm,binlog_ignore_db = mysql 。 其中db_zhanye_sm是要同步的数据库名称,操做后以下图所示

 

找到bing-adress 把127.0.0.1修改成腾讯云主机内网ip 10.104.190.222,不修改会致使等下MySQL没法重启

 

 

Esc 退出vim编辑状态 

:wq 保存修改内容,并回到控制台(第一步":"具体操做按同时按住Shift ;两个键 第二步w 第三步q 第四步回车键 )        

mysql -u root -p   打开数据库,接下来输入数据库密码

root        输入密码后进入数据库

接下来是建立一个新用户用来远程链接使用:   

在MySQL中输入如下命令 注释:username - 你将建立的用户名, host - 指定该用户在哪一个主机上能够登录,若是是本地用户可用localhost, 若是想让该用户能够从任意远程主机登录,可使用通配符%. password - 该用户的登录密码,密码能够为空,若是为空则该用户能够不须要密码登录服务器。MySQL里面输入命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

create user 'Edward'@'%' IDENTIFIED BY '123';

 

在MySQL中操做此命令,此处是受权命令。例如:GRANT privileges ON databasename.tablename TO 'username'@'host';privileges - 用户的操做权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).若是要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,若是要授予该用户对全部数据库和表的相应操做权限则可用*表示, 如*.*.  例子:( GRANT SELECT, INSERT ON test.user TO 'pig'@'%';) 

GRANT SELECT,INSERT ON db_zhanye_sm.* TO 'Edward'@'%';

 

用以上命令受权的用户不能给其它用户受权,若是想让该用户能够受权,用如下命令: GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

GRANT privileges ON db_zhanye_sm.test TO 'Edward'@'%' WITH GRANT OPTION;

 

 

授予从机复制表权限,示例:GRANT REPLICATION SLAVE ON *.* TO 'user'@'X.X.X.X' IDENTIFIED BY 'password';

GRANT REPLICATION SLAVE ON *.* TO 'Edward'@'%' IDENTIFIED BY '123';

exit   退出数据库操做

sudo /etc/init.d/mysql restart    重启数据库

mysql -u root -p     登陆数据库,

root          

show master status;  显示信息以下图所示,注:执行完此步骤后不要再操做主服务器MYSQL,防止主服务器状态值变化。记录File 和 Position的值并给从机使用;

 

主机命令集合,供老鸟使用
sudo apt-get install openjdk-8-jdk sudo apt-get install mysql-server cd /etc/mysql/mysql.conf.d/ sudo vim mysqld.cnf 取消注释,修改    binglog_do_db =        binlog_ignore_db = 腾讯云安全规则修改,找到bing-adress 把127.0.0.1替换为腾讯云主机内网ip Esc :wq mysql -u root -p    create user 'user'@'%' IDENTIFIED BY 'password'; GRANT SELECT,INSERT ON db_zhanye_sm.* TO 'user'@'%'; GRANT privileges ON db_zhanye_sm.test TO 'user'@'%' WITH GRANT OPTION; GRANT REPLICATION SLAVE ON *.* TO 'user'@'%' IDENTIFIED BY 'password'; sudo /etc/init.d/mysql restart mysql -u root -p  show master status; 

 

从机配置:

 

4.2修改mysqld.cnf文件信息

cd /etc/mysql/mysql.conf.d/

sudo vim mysqld.cnf  此时打开mysqld.cnf出现大量信息

i  进入编辑模式

  一直操做向下箭头,在[mysqld]下一行添加:

[mysqld]

server-id = 2

relay-log = slave-relay-bin

relay-log-index = slave-relay-bin.index

Esc 退出vim编辑状态 

:wq 保存修改内容,并回到控制台(第一步":"具体操做按同时按住Shift ;两个键 第二步w 第三步q 第四步回车键 )        

重启MySQL,命令:
 sudo /etc/init.d/mysql restart

3.登陆MySQL

mysql -u root -p   打开数据库,接下来输入数据库密码

root        输入密码后进入数据库

stop slave;   中止slave服务

在MySQL中输入如下命令,便可链接Master主服务器:此时须要主机提供记录的File 和 Position的值


 change master to master_host='119.29.234.43',master_port=3306,master_user='Edward',master_password='123',master_log_file='mysql-bin.000009',master_log_pos=154;


 备注:master_host对应主服务器的外网IP地址,master_port对应主服务器的端口(3306),master_log_file对应show master status显示的File列:mysql-bin.000009,master_log_pos对应Position列:154,不然有可能出现同步失败。

exit  退出MySQL

sudo /etc/init.d/mysql restart    重启数据库

登陆MySQL

mysql -u root -p   打开数据库,接下来输入数据库密码

root        输入密码后进入数据库

start slave;    启动Slave数据同步

show slave status\G;  若是slave_io_running和slave_sql_running都为yes,那么代表能够成功同步了

 

从机命令集合,供老鸟使用
cd /etc/mysql/mysql.conf.d/ sudo vim mysqld.cnf [mysqld] server-id = 2 relay-log = slave-relay-bin relay-log-index = slave-relay-bin.index sudo /etc/init.d/mysql restart mysql -u root -p    start slave; stop slave; change master to master_host='119.29.234.43',master_port=3306,master_user='Edward',master_password='123',master_log_file='mysql-bin.000009',master_log_pos=154; show slave status\G;

 

实现同步数据库

主机数据库建立:

在主机上登陆MySQL

mysql -u root -p           打开数据库,接下来输入数据库密码

root                输入密码后进入数据库

查看数据库:          show databases;
建立数据库并设置编码UTF8:     CREATE DATABASE `db_zhanye_sm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

{ 备注:sql文件写入数据库:source ~/db_zhanye_sm.sql  其中"~/"是路径  db_zhanye_sm.sql是sql文件名,须要借助软件(例如:FlashFXP)把sql文件上传到服务器,才能写入,这里不详述;采起新建数据库操做测试  }

查看数据库:          show databases;
选定数据库:          use db_zhanye_sm;

添加一张表并插入数据:

 

CREATE TABLE `departments` (
  `dept_id` int(11) NOT NULL,
  `dept_name` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `departments` VALUES ('1', '生产部');
INSERT INTO `departments` VALUES ('2', '质量管理部');
INSERT INTO `departments` VALUES ('3', '技术部');
INSERT INTO `departments` VALUES ('4', '综合管理部');

 

 

从机数据库建立,查看同步:

在从机上登陆MySQL

mysql -u root -p           打开数据库,接下来输入数据库密码

root                输入密码后进入数据库

查看数据库:          show databases;
建立数据库并设置编码UTF8:     CREATE DATABASE `db_zhanye_sm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

选定数据库:          use db_zhanye_sm;

查看全部表:(查看到表便是成功)  show tables; 

查看departments表的数据,主机添加数据便可从新查便可看到新数据:  

                select * from departments;

 

 

附:云服务器安全规则配置详情

腾讯云:
一、设置主数据库外网访问权限。
a、设置3306端口外部访问权限。(修改/etc/mysql/mysql/mysql.conf.d/文件夹中的mysqld.cnf文件,
将bind_address的值由'127.0.0.1'改为你腾讯云内网IP地址)
b、重启mysql服务器,而后输入netstat -anpt|grep 3306检查3306端口是否显示腾讯云的内网IP

 

二、阿里云修改主机/etc/mysql/mysql.cnf.d/mysqld.cnf文件,将bind_address注释掉添加安全组规则:入方向:协议类型选择My SQL受权类型改成地址段访问受权对象输入:0.0.0.0/0

相关文章
相关标签/搜索