云服务器MySQL主从配置完全解读

2018-06-17 23:59:45来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

腾讯云服务器如图所示:

具体步骤:

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

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;

 

 

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

腾讯云:
1、设置主数据库外网访问权限。
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

 


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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:MySql 多表查询

下一篇:mysql哈希索引