zookeeper mysql 配置_Mysql + canal + zookeeper环境搭建

Mysql + canal + zookeeper环境搭建

一、mysql集群搭建

1. mysql基本环境

操作系统: Linux version 2.6.32-431.el6.x86_64

数据库:MySQL Community Server 5.7.20

主节点IP:10.60.81.157

主节点IP:10.60.81.158

从节点IP:10.60.81.159

2. 安装mysql

2.1.官网下载MySQL

mysql-5.7.20-1.el6.x86_64.rpm-bundle.tar

2.2. 三个节点都安装:

2.2.1.三个节点查看是否安装mysql

rpm -qa | grep mysql

rpm -e --nodeps mysql-libs-5.1.66-2.el6_3.x86_64 (有则删除)

2.2.2. 三个节点都安装mysql

tar –xvf mysql-5.7.20-1.el6.x86_64.rpm-bundle.tar

rpm -ivh mysql-community-common-5.7.20-1.el6.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.20-1.el6.x86_64.rpm

rpm -ivh mysql-community-client-5.7.20-1.el6.x86_64.rpm

rpm -ivh mysql-community-server-5.7.20-1.el6.x86_64.rpm

2.3.设置密码

2.3.1. 编辑配置文件my.cnf

[mysqld]

server-id=157  #####这里不同

log-bin=mysql-bin   ####开启二进制日志

log-slave-updates

binlog-format=ROW

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

skip-external-locking

key_buffer_size = 384M

max_allowed_packet = 1M

table_open_cache = 512

sort_buffer_size = 2M

read_buffer_size = 2M

read_rnd_buffer_size = 8M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size = 32M

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

#skip-grant-tables=1

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

2.3.2. 启动mysql

service mysqld start

2.3.3. 获取MySQL的临时密码

如果安装的是RPM包,则默认是/var/log/mysqld.log

2.3.4. 登陆并修改密码

使用默认的密码登陆:

mysql -uroot -p

alter user 'root'@'localhost'  identified  by  'Mysql@123456';

flush privileges;

3. 创建同步数据用户及授权用户

3.1.授权其他机器登陆

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Mysql@123456' WITH GRANT OPTION;

flush privileges;

3.2. 创建同步用户

grant replication slave on *.*  to 'mytest'@'10.60.81.%' identified by 'mytest@123';

4. mysql主主配置

4.1. 配置两台主机及启动

查看两台主机(10.60.81.157、10.60.81.158)配置文件(my.cnf)除了server-id不一样,其他几乎一模一样。配置文件写好后,我们把两台服务器上的mysql服务器启动起来

4.2. 登录10.60.81.157的mysql中查看master状态

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000002 |     1290 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

4.3. 登录10.60.81.158的msyql中,把10.60.81.157配置成自己的主

Change master to master_host='10.60.81.157',master_port=3306,master_user='mytest',master_password='mytest@123',master_log_file='mysql-bin.000002',master_log_pos=1290;

同上,查看10.60.81.158,然后登录10.60.81.157,把10.60.81.158,配置成自己的主,然后分别在两台机器的mysql中,启动slave

4.4. 启动10.60.81.158状态

mysql> show slave status \G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.60.81.158

Master_User: mytest

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000003

Read_Master_Log_Pos: 1290

Relay_Log_File: sz280317-relay-bin.000009

Relay_Log_Pos: 367

Relay_Master_Log_File: mysql-bin.000002

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

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: 1290

Relay_Log_Space: 743

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:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 158

Master_UUID: b805346c-54e0-11e8-baa8-005056a42d94

Master_Info_File: /var/lib/mysql/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

ERROR:

No query specified

可以看到 Slave_IO_Running: Yes

Slave_SQL_Running: Yes

然后在看10.60.81.158的状态:

mysql> show slave status \G;

*************************** 1. row

***************************

Slave_IO_State: Waiting for

master to send event

Master_Host: 10.60.81.157

Master_User: mytest

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000005

Read_Master_Log_Pos: 717

Relay_Log_File:

sz280318-relay-bin.000010

Relay_Log_Pos: 6027

Relay_Master_Log_File: mysql-bin.000002

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

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: 717

Relay_Log_Space: 7402

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:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 157

Master_UUID:

1412180f-54c9-11e8-9e3e-005056a436f6

Master_Info_File: /var/lib/mysql/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for more

updates

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

ERROR:

No query specified

5.mysql主从配置

查看两台机器(10.60.81.157、10.60.81.159),把10.60.81.157作主,10.60.81.159作从,与主主配置唯一不同是,不要在主机配置从机为自己的主即可。

二、zookeeper集群搭建

1. zookeeper基本环境

操作系统: Linux version

2.6.32-431.el6.x86_64

Zookeeper:  zookeeper-3.4.12.tar.gz

三台机器:10.60.81.160、10.60.81.161、10.60.81.162

2. zookeeper 安装与配置

2.1.官网下载zookeeper

zookeeper-3.4.12.tar.gz

2.2. 上传到远程节点

scp zookeeper.tar.gz root@10.60.81.161

scp zookeeper.tar.gz root@10.60.81.161

scp zookeeper.tar.gz root@10.60.81.162

2.3. 登录远程节点(其他两个节点的擦作大同小异)

ssh root@192.168.213.44

2.4. 解压包,配置,在cnof 目录新建zoo.cfg

sz280320:cloudera-scm@/hgx/zookeeper-3.4.12/conf>cat

zoo.cfg

tickTime=2000

initLimit=5

syncLimit=2

dataDir=/hgx/servers/zookeeper/data

dataLogDir=/hgx/servers/zookeeper/logs

clientPort=4180

server.60=10.60.81.160:2888:3888

server.61=10.60.81.161:2888:3888

server.62=10.60.81.162:2888:3888

在目录上述dataDir的目录中创建myid, 将上述的三个数,server.X(我这里的X是60,61,62),中的X值写入myid文件,三台节点的myid这是不一样的。

3、zookeeper 启动与运行

3.1. 三个节点都要启动

zookeeper/bin/zkServer.sh start

3.2、zookeeper状态检查

sz280320:cloudera-scm@/hgx/zookeeper-3.4.12/bin>./zkCli.sh

-server 10.60.81.160:4180

Connecting to 10.60.81.160:4180

2018-05-21 11:26:37,346 [myid:] - INFO  [main:Environment@100] - Client

environment:zookeeper.version=3.4.12-e5259e437540f349646870ea94dc2658c4e44b3b,

built on 03/27/2018 03:55 GMT

2018-05-21 11:26:37,355 [myid:] - INFO  [main:Environment@100] - Client

environment:host.name=sz280320

2018-05-21 11:26:37,355 [myid:] - INFO  [main:Environment@100] - Client

environment:java.version=1.8.0_151

2018-05-21 11:26:37,361 [myid:] - INFO  [main:Environment@100] - Client

environment:java.vendor=Oracle Corporation

2018-05-21 11:26:37,361 [myid:] - INFO  [main:Environment@100] - Client

environment:java.home=/usr/java/jdk1.8.0_151/jre

2018-05-21 11:26:37,362 [myid:] - INFO  [main:Environment@100] - Client

environment:java.class.path=/hgx/zookeeper-3.4.12/bin/../build/classes:/hgx/zookeeper-3.4.12/bin/../build/lib/*.jar:/hgx/zookeeper-3.4.12/bin/../lib/slf4j-log4j12-1.7.25.jar:/hgx/zookeeper-3.4.12/bin/../lib/slf4j-api-1.7.25.jar:/hgx/zookeeper-3.4.12/bin/../lib/netty-3.10.6.Final.jar:/hgx/zookeeper-3.4.12/bin/../lib/log4j-1.2.17.jar:/hgx/zookeeper-3.4.12/bin/../lib/jline-0.9.94.jar:/hgx/zookeeper-3.4.12/bin/../lib/audience-annotations-0.5.0.jar:/hgx/zookeeper-3.4.12/bin/../zookeeper-3.4.12.jar:/hgx/zookeeper-3.4.12/bin/../src/java/lib/*.jar:/hgx/zookeeper-3.4.12/bin/../conf:

2018-05-21 11:26:37,362 [myid:] - INFO  [main:Environment@100] - Client

environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

2018-05-21 11:26:37,362 [myid:] - INFO  [main:Environment@100] - Client

environment:java.io.tmpdir=/tmp

2018-05-21 11:26:37,362 [myid:] - INFO  [main:Environment@100] - Client

environment:java.compiler=

2018-05-21 11:26:37,363 [myid:] - INFO  [main:Environment@100] - Client

environment:os.name=Linux

2018-05-21 11:26:37,363 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64

2018-05-21 11:26:37,363 [myid:] - INFO  [main:Environment@100] - Client

environment:os.version=2.6.32-431.el6.x86_64

2018-05-21 11:26:37,364 [myid:] - INFO  [main:Environment@100] - Client

environment:user.name=cloudera-scm

2018-05-21 11:26:37,364 [myid:] - INFO  [main:Environment@100] - Client

environment:user.home=/home/cloudera-scm

2018-05-21 11:26:37,364 [myid:] - INFO  [main:Environment@100] - Client

environment:user.dir=/hgx/zookeeper-3.4.12/bin

2018-05-21 11:26:37,368 [myid:] - INFO  [main:ZooKeeper@441] - Initiating client

connection, connectString=10.60.81.160:4180 sessionTimeout=30000

watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@799f7e29

Welcome to ZooKeeper!

2018-05-21 11:26:37,430 [myid:] - INFO  [main-SendThread(10.60.81.160:4180):ClientCnxn$SendThread@1028]

- Opening socket connection to server 10.60.81.160/10.60.81.160:4180. Will not

attempt to authenticate using SASL (unknown error)

JLine support is enabled

2018-05-21 11:26:37,622 [myid:] - INFO  [main-SendThread(10.60.81.160:4180):ClientCnxn$SendThread@878]

- Socket connection established to 10.60.81.160/10.60.81.160:4180, initiating

session

2018-05-21 11:26:37,653 [myid:] - INFO

[main-SendThread(10.60.81.160:4180):ClientCnxn$SendThread@1302] -

Session establishment complete on server 10.60.81.160/10.60.81.160:4180,

sessionid = 0x3c039e8bf59a0003, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None

path:null

三、搭建HA模式的canal

1. canal基本环境

操作系统: Linux version

2.6.32-431.el6.x86_64

canal server: canal.deployer-1.0.25.tar.gz

二台机器:10.60.81.159、10.60.81.158

2.Canal安装

2.1. 官网下载Canal

canal.deployer-1.0.25.tar.gz

2.2. 新建canal用户,并赋予权限

CREATE USER canal IDENTIFIED BY

'canal';

GRANT SELECT, REPLICATION SLAVE,

REPLICATION CLIENT ON *.* TO 'canal'@'%';

FLUSH PRIVILEGES;

(在10.60.81.157机器中进入mysql创建canal用户,并赋予权限)

2.3. 上传包到两个远程节点

scp canal.deployer-1.0.25.tar.gz  root@10.60.81.159:/hgx/

scp canal.deployer-1.0.25.tar.gz  root@10.60.81.158:/hgx/

2.4.二个节点安装canal

tar –zxvf canal.deployer-1.0.25.tar.gz

mv canal.deployer-1.0.25

canal

3. canal配置文件

3.1. canal.properties

#################################################

#########               common argument         #############

#################################################

canal.id= 1

canal.ip=

canal.port= 11111

canal.zkServers=10.60.81.160:4180,10.60.81.161:4180,10.60.81.162:4180

# flush data to zk

canal.zookeeper.flush.period = 1000

# flush meta cursor/parse position to file

canal.file.data.dir = ${canal.conf.dir}

canal.file.flush.period = 1000

## memory store RingBuffer size, should be

Math.pow(2,n)

canal.instance.memory.buffer.size = 16384

## memory store RingBuffer used memory unit

size , default 1kb

canal.instance.memory.buffer.memunit = 1024

## meory store gets mode used MEMSIZE or

ITEMSIZE

canal.instance.memory.batch.mode = MEMSIZE

## detecing config

canal.instance.detecting.enable = false

#canal.instance.detecting.sql = insert into

retl.xdual values(1,now()) on duplicate key update x=now()

canal.instance.detecting.sql = select 1

canal.instance.detecting.interval.time = 3

canal.instance.detecting.retry.threshold =

3

canal.instance.detecting.heartbeatHaEnable

= false

# support maximum transaction size, more

than the size of the transaction will be cut into multiple transactions

delivery

canal.instance.transaction.size =  1024

# mysql fallback connected to new master

should fallback times

canal.instance.fallbackIntervalInSeconds =

60

# network config

canal.instance.network.receiveBufferSize =

16384

canal.instance.network.sendBufferSize =

16384

canal.instance.network.soTimeout = 30

# binlog filter config

#canal.instance.filter.druid.ddl = true

canal.instance.filter.query.dcl = false

canal.instance.filter.query.dml = false

canal.instance.filter.query.ddl = false

canal.instance.filter.table.error = false

canal.instance.filter.rows = false

# binlog format/image check

canal.instance.binlog.format =

ROW,STATEMENT,MIXED

canal.instance.binlog.image = FULL,MINIMAL,NOBLOB

# binlog ddl isolation

canal.instance.get.ddl.isolation = false

#################################################

#########               destinations            #############

#################################################

canal.destinations= kafka

# conf root dir

canal.conf.dir = ../conf

# auto scan instance dir add/remove and

start/stop instance

canal.auto.scan = true

canal.auto.scan.interval = 5

#canal.instance.tsdb.spring.xml=classpath:spring/tsdb/h2-tsdb.xml

#canal.instance.tsdb.spring.xml=classpath:spring/tsdb/mysql-tsdb.xml

canal.instance.global.mode = spring

canal.instance.global.lazy = false

#canal.instance.global.manager.address =

127.0.0.1:1099

#canal.instance.global.spring.xml =

classpath:spring/local-instance.xml

#canal.instance.global.spring.xml =

classpath:spring/memory-instance.xml

#canal.instance.global.spring.xml =

classpath:spring/file-instance.xml

canal.instance.global.spring.xml =

classpath:spring/default-instance.xml

3.2. instance.properties

#################################################

## mysql serverId

canal.instance.mysql.slaveId=1234  ##另外一台机器改成1235,保证slaveId不重复即可

# position info

canal.instance.master.address=10.60.81.157:3306

canal.instance.master.journal.name=

canal.instance.master.position=

canal.instance.master.timestamp=

# table meta tsdb info

canal.instance.tsdb.enable=true

canal.instance.tsdb.dir=${canal.file.data.dir:../conf}/${canal.instance.destination:}

canal.instance.tsdb.url=jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL;

#canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb

canal.instance.tsdb.dbUsername=canal

canal.instance.tsdb.dbPassword=canal

#canal.instance.standby.address =

#canal.instance.standby.journal.name =

#canal.instance.standby.position =

#canal.instance.standby.timestamp =

# username/password

canal.instance.dbUsername=canal

canal.instance.dbPassword=canal

canal.instance.defaultDatabaseName=

canal.instance.connectionCharset=UTF-8

# table regex

canal.instance.filter.regex=.*\\..*

# table black regex

canal.instance.filter.black.regex=

#################################################

***上述两个配置文件,黄色标记部分为修改部分在两个服务器上一样***

4. 启动canal服务

两台机器分别执行:canal/bin/zkServer.sh

5. 查看是否启动成功

5.1. 在10.60.81.159查看日志

7d58d7a09f636a919cbf81eb25ac9cd2.png

5.2. 在10.60.81.158查看日志

82b21e7de51fc29320aac6745b173f9c.png

***上述两服务器日志文件(canal.log)出现如图所示,说明canal的HA搭建成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值