Before You Begin: Assign Information Classification
Download
Report
Transcript Before You Begin: Assign Information Classification
Informix Enterprise
Replication in 5 easy
Steps
WAIUG Forum
December 8-9, 2006
Nancy Balsbaugh
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
1
What are we going to cover?
Overview
Types of Enterprise Replication
Requirements – Linux, 10.00.UC5
How to set it up
How to verify/check replication
Troubleshooting
Pitfalls and Gotchas
Magic Cookies
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
2
Types of Enterprise Replication
Primary – Target (tree)
Simple
No Conflict
Works or Not
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
3
Types of Enterprise Replication cont’d
Update Anywhere
Complex
Conflict resolution
May Partially Work
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
4
Requirements
Connectivity
Sqlhosts
g_hdr group g_server1
-
group -
server1 onsoctcp
g_server2
i=1
i=2
hostname1
group -
server2 onsoctcp
-
-
server1 g=g_server1
i=3
hostname2
server2 g=g_server2
.rhosts
/etc/services
/etc/hosts
Template File <filename>
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
5
Requirements Cont’d
Onconfig
Dbserveralias – used in the sqlhosts file
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
6
How To Set It Up
Step 1 - Define the Servers
Step 2 - Define the replicates
Step 3 - Change the state of the replicate (start
replicating)
Step 4 - Synchronize the Data (copy pre-replication
data)
Step 5 - Verify
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
7
Step 1 - Define the servers
Participants, master, conflict resolution rules and scope, frequency,
error logging, full rows or changed columns, triggers, etc.
Primary
cdr define server --connect=server1 --idle=0 --ats=/errorlog/ats -ris=/errorlog/ris --init g_server1
Secondary
cdr define server -c server1 --idle=0 --init --leaf --sync=g_server1
server2
ATS – aborted transaction spooling, RIS – row information
spooling, Init - option initializes the server, Idle – idle timeout, Leaf
means tree hierarchy – leave that out if you want update anywhere
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
8
After the first server is defined
cdr list server
SERVER
ID STATE
STATUS
QUEUE
CONNECTION CHANGED
-----------------------------------------------------------------------
g_server1
3 Active
Local
0
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
9
After the 2nd server is defined
cdr list server
SERVER
ID STATE
STATUS
QUEUE
CONNECTION CHANGED
-----------------------------------------------------------------------
g_server1
3 Active
Local
0
g_server2
7 Active
Connected
0 Nov 14 13:47:09
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
10
Cdr list of tree hierarchy
Listing g_server1
SERVER
ID STATE
STATUS
QUEUE CONNECTION CHANGED
----------------------------------------------------------------------g_server2
4 Active
Connected
0 Nov 14 13:46:16
g_server3
5 Active
Connected
0 Nov 14 13:47:29
g_server1
3 Active
Local
0
**********
Listing g_server2
SERVER
ID STATE
STATUS
QUEUE CONNECTION CHANGED
----------------------------------------------------------------------g_server2
4 Active
Local
0
g_server1
3 Active
Connected
0 Nov 14 13:46:17
**********
Listing g_server3
SERVER
ID STATE
STATUS
QUEUE CONNECTION CHANGED
----------------------------------------------------------------------g_server3
5 Active
Local
0
g_server1
3 Active
Connected
0 Nov 14 13:47:28
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
11
Update Anywhere cdr list
Listing g_server1
SERVER
ID STATE
STATUS
QUEUE CONNECTION CHANGED
----------------------------------------------------------------------g_server2
4 Active
Connected
0 Nov 14 13:46:16
g_server3
5 Active
Connected
0 Nov 14 13:47:29
g_server1
3 Active
Local
0
**********
Listing g_server2
SERVER
ID STATE
STATUS
QUEUE CONNECTION CHANGED
----------------------------------------------------------------------g_server2
4 Active
Local
0
g_server1
3 Active
Connected
0 Nov 14 13:46:17
g_server3
5 Active
Connected
0 Nov 14 13:47:29
**********
Listing g_server3
SERVER
ID STATE
STATUS
QUEUE CONNECTION CHANGED
----------------------------------------------------------------------g_server3
5 Active
Local
0
g_server1
3 Active
Connected
0 Nov 14 13:47:28
g_server2
4 Active
Connected
0 Nov 14 13:46:16
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
12
Step 2 – Option 1 - Define the replicates
cdr define replicate --conflict=timestamp --scope=row --ats --ris -master=g_server1 <replicate_name>
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
13
Step 2 – Option 1 - Define the replicates
cdr list repl
CURRENTLY DEFINED REPLICATES
------------------------------REPLICATE:
r_test1
STATE:
Active ON:g_a1
CONFLICT:
Always Apply
FREQUENCY:
immediate
QUEUE SIZE:
0
PARTICIPANT:
testdb:informix.test1
OPTIONS:
transaction,ris,ats,fullrow
REPLID:
65537 / 0x10001
REPLMODE:
PRIMARY
APPLY-AS:
INFORMIX ON:g_a1
REPLTYPE:
Master
REPLICATE:
r_test2
STATE:
Active ON:g_a1
CONFLICT:
Always Apply
FREQUENCY:
immediate
QUEUE SIZE:
0
PARTICIPANT:
testdb:informix.test2
OPTIONS:
transaction,ris,ats,fullrow
REPLID:
65538 / 0x10002
REPLMODE:
PRIMARY
APPLY-AS:
INFORMIX ON:g_a1
REPLTYPE:
Master
ON:g_a1
ON:g_a1
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
14
Step 2 - Option 2 – Define a Template
cdr define template <templatename>
--conflict=timestamp
--scope=row --ats --ris --firetrigger
--master=g_server1
--database=dbname --file=<filename>
The file contains a list of tables to be replicated –
easiest way.
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
15
Step 2 - Option 2 – Define a Template
cdr list template
TEMPLATE
DATABASE
TABLES
==============================================
Template_name
dbname
informix.table1
dbname
informix.table2
dbname
informix.table3
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
16
Step 3 - Option 1 – Change the replicate
cdr start replicate <replicate_name> g_server1 g_server2
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
17
Step 3 - Option 2 - Realize the template
cdr realize template <templatename> g_server1
cdr realize template <templatename> g_server2 g_server3
This copies the replicate to the other servers and
changes it’s state – “starts it”
Do the primary first!
Then broadcast the rest
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
18
Synchronize the data
cdr sync replset -m g_server1 -s <templatename>
--firetrigger g_server2 g_server3
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
19
How to Verify/Check Replication
cdr check replicateset -c server1 -m g_server1 -s
<templatename> -v -a
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
20
Troubleshooting
To Repair Replication
cdr check replicateset -c server1 -m g_server1 -s
<templatename> -v –a –R
Cdr list of all the servers (with the connect option)
Cdr err of all the servers (with the connect option)
Check all the servers message logs
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
21
cdr err –a Without Errors
SERVER:SEQNO
REVIEW TIME
ERROR
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
22
cdr err –a With Errors
SERVER:SEQNO
REVIEW
TIME
ERROR
g_server2:164
N
2006-11-02 19:39:01
31
GC operation participate replicate
'sync_17797_131103_1162517923' failed: undefined replicate
g_server3:165
N
2006-11-02 19:39:01
31
GC operation participate replicate
'sync_17797_131103_1162517923' failed: undefined replicate
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
23
Online Log when replication is being set-up
12:10:39
12:10:40
12:10:42
12:10:42
Building 'syscdr' database ...
'syscdr' database built successfully.
CDR queuer initialization complete
CDR NIF listening on asf://g_server1
12:13:10 Checkpoint Completed: duration was 1 seconds.
12:13:10 Checkpoint loguniq 298, logpos 0x132a7018, timestamp:
0xf5f9165
.
12:20:22 ER checkpoint started
.
12:20:25 DDR Log Snooping - Snooping started in log 299
12:25:41 Checkpoint Completed: duration was 0 seconds.
12:25:41 Checkpoint loguniq 299, logpos 0x3bb9018, timestamp:
0xf63be8a
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
24
Pitfalls and Gotchas
cdr err will mark errors and you’ll need to make sure
you use cdr err –a to see all errors that haven’t been
zapped.
If Update-Anywhere, then use the –c option to connect
to the other servers and look from their perspective.
Use the –c (connect) option to make control codes
come from one central server.
Define can only be done serially – same with all the
commands. Do not run them in parallel. To speed
things up – Use broadcast mode.
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
25
Pitfalls and Gotchas cont’d
You must list all servers for cdr list otherwise 2 servers
can have problems between them that doesn’t affect
the primary. If you are looking only at the primary, you
won’t see it.
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
26
Magic Cookies
Check the return code
Check the output of cdr err –a
Use cdr err --zap to clear out errors
Always check the list of all the servers and the errors
on all the servers.
Use cdr finderr to lookup errors
Scripts Included! Very Basic! Need improvement.
Mostly so you can see the cdr commands. Feel free to
improve upon them and send them back to me.
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
27
cdr finderr
12:11:10
CDR GC synchronization error 35
finderr 35
-35
Operation would block.
An operating-system error code with the
meaning shown was unexpectedly returned
to the database server. If the error
recurs, note all circumstances and
contact Technical Support at
[email protected].
WAIUG Forum December 8-9, 2006 Introduction to IDS
Enterprise Replication
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
28
cdr finderr cont’d
cdr finderr 35
35
server not defined in sqlhosts
Sqlhosts on leaf
g_hdr
group
-
g_server1
group
server1
-
-
i=2
onsoctcp
SERV1
server1
g_server2
group
-
i=3
server2
onsoctcp
SERV2
server2
Presentation_ID
-
i=1
-
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
g=g_server1
g=g_server2
29
Q&A
Any Questions?
Source: Placeholder for Notes is 14 points
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
30
Thank You
Nancy Balsbaugh
[email protected]
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
31
To list all the replication servers (cdr list)
#!/bin/ksh
echo "Building custom scripts for this Cluster"
echo "#!/bin/ksh" > cdrlist.new
chmod 700 cdrlist.new
echo "echo \"***********************\"" >> cdrlist.new
echo "date" >> cdrlist.new
echo "echo \"Starting Listing Servers\"" >> cdrlist.new
for i in `cat pub`
do
echo "Adding in the publisher $i"
echo "echo \"Listing g_$i\"" >> cdrlist.new
echo "cdr list server -c $i" >> cdrlist.new
echo "echo \"Return value:\$?\"" >> cdrlist.new
echo "echo \"\"" >> cdrlist.new
echo "echo \"\"" >> cdrlist.new
echo "echo \"**********\"" >> cdrlist.new
done
export pub=$i
echo "pub = $pub"
for i in `cat servers`
do
echo "Adding in the subscriber $i"
echo "echo \"Listing g_$i\"" >> cdrlist.new
echo "cdr list server -c $i" >> cdrlist.new
echo "echo \"Return value:\$?\"" >> cdrlist.new
echo "echo \"\"" >> cdrlist.new
echo "echo \"\"" >> cdrlist.new
echo "echo \"**********\"" >> cdrlist.new
done
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
32
To see errors (cdr err)
echo "#!/bin/ksh" > cdrerr.new
chmod 700 cdrerr.new
echo "echo \"***********************\"" >> cdrerr.new
echo "date" >> cdrerr.new
echo "echo \"Starting Listing Servers\"" >> cdrerr.new
for i in `cat pub`
do
echo "Adding in the publisher $i"
echo "echo \"Showing Errors from g_$i\"" >> cdrerr.new
echo "cdr err -a -c $i" >> cdrerr.new
echo "echo \"Return value:\$?\"" >> cdrerr.new
echo "echo \"\"" >> cdrerr.new
echo "echo \"\"" >> cdrerr.new
echo "echo \"**********\"" >> cdrerr.new
done
export pub=$i
echo "pub = $pub"
for i in `cat servers`
do
echo "Adding in the subscriber $i"
echo "echo \"Showing Errors from g_$i\"" >> cdrerr.new
echo "cdr err -a -c $i" >> cdrerr.new
echo "echo \"Return value:\$?\"" >> cdrerr.new
echo "echo \"\"" >> cdrerr.new
echo "echo \"\"" >> cdrerr.new
echo "echo \"**********\"" >> cdrerr.new
done
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
33
To clear errors in cdr err
echo "#!/bin/ksh" > cdrzap.new
chmod 700 cdrzap.new
echo "echo \"***********************\"" >> cdrzap.new
echo "date" >> cdrzap.new
echo "echo \"Starting Listing Servers\"" >> cdrzap.new
for i in `cat pub`
do
echo "Adding in the publisher $i"
echo "echo \"Showing Errors from g_$i\"" >> cdrzap.new
echo "cdr err -z -c $i" >> cdrzap.new
echo "echo \"Return value:\$?\"" >> cdrzap.new
echo "echo \"\"" >> cdrzap.new
echo "echo \"\"" >> cdrzap.new
echo "echo \"**********\"" >> cdrzap.new
done
export pub=$i
echo "pub = $pub"
for i in `cat servers`
do
echo "Adding in the subscriber $i"
echo "echo \"Showing Errors from g_$i\"" >> cdrzap.new
echo "cdr err -z -c $i" >> cdrzap.new
echo "echo \"Return value:\$?\"" >> cdrzap.new
echo "echo \"\"" >> cdrzap.new
echo "echo \"\"" >> cdrzap.new
echo "echo \"**********\"" >> cdrzap.new
done
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
34
To Run Cdr Check
echo "#!/bin/ksh" > cdrcheck.new
chmod 700 cdrcheck.new
echo "date" >> cdrcheck.new
echo "echo \"Running cdr check for status of Cluster\"" >> cdrcheck.new
echo "time cdr check replicateset -c $pub -m g_$pub -s <templatename> -v -a >>
/home/informix/cdr_check_output_all_\`date +%Y%m%d%H%M\` 2>&1" >> cdrcheck.new
echo "echo \"\"" >> cdrcheck.new
echo "echo \"Showing Errors from g_$i\"" >> cdrcheck.new
for i in `cat servers`
do
echo "Adding in the subscriber $i"
echo "$i" >> cdrcheck.new
done
echo "-v -a >> /home/informix/cdr_check_output_all_\`date +%Y%m%d%H%M\` 2>&1" >> cdrcheck.new
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
35
To Delete a server
echo "#!/bin/ksh" > deleteserv.new
chmod 700 deleteserv.new
echo "date" >> deleteserv.new
for i in `cat servers`
do
echo "Adding in $i"
echo "echo \"Deleting g_$i\"" >> deleteserv.new
echo "cdr delete server g_$i --connect=$i" >> deleteserv.new
echo "echo \"Return value:\$?\"" >> deleteserv.new
done
for i in `cat pub`
do
echo "Adding in the publisher $i"
echo "echo \"Deleting g_$i\"" >> deleteserv.new
echo "cdr delete server g_$i" >> deleteserv.new
echo "echo \"Return value:\$?\"" >> deleteserv.new
done
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
36
To Define a server
echo "#!/bin/ksh" > defserv.new
chmod 700 defserv.new
echo "date" >> defserv.new
echo "echo \"Starting Define Servers\"" >> defserv.new
for i in `cat pub`
do
echo "Adding in the publisher $i"
echo "echo \"Defining g_$i\"" >> defserv.new
echo "cdr define server --connect=$i --idle=0 --init g_$i" >> defserv.new
echo "echo \"Return value:\$?\"" >> defserv.new
done
export pub=$i
echo "pub = $pub"
for i in `cat servers`
do
echo "Adding in the subscriber $i"
echo "echo \"Defining g_$i\"" >> defserv.new
echo "cdr define server -c $i --idle=0 --init --leaf --sync=g_$pub g_$i" >> defserv.new
echo "echo \"Return value:\$?\"" >> defserv.new
done
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
37
To Define a template
echo "#!/bin/ksh" > deftemp.new
chmod 700 deftemp.new
echo "date" >> deftemp.new
echo "echo \"Starting Define Template\"" >> deftemp.new
export pub=`cat pub`
echo "pub = $pub"
export database=`cat database`
echo "database = $database"
echo "cdr define template <templatename> --conflict=always --scope=row --master=g_$pub -database=$database --file=<filename>" >> deftemp.new
echo "echo \"Return value:\$?\"" >> deftemp.new
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
38
To Realize the template (copy the template to
the other servers and turn on replication)
echo "#!/bin/ksh" > realizetemp.new
chmod 700 realizetemp.new
echo "date" >> realizetemp.new
echo "echo \"Starting Realize Template\"" >> realizetemp.new
for i in `cat pub`
do
echo "Adding in the publisher $i"
echo "echo \"Realizing template on g_$i\"" >> realizetemp.new
echo "cdr realize template <templatename> g_$i" >> realizetemp.new
echo "echo \"Return value:\$?\"" >> realizetemp.new
done
export pub=$i
echo "pub is $pub"
echo "Adding in the subscribers"
echo "echo \"Realizing template on subscribers\"" >> realizetemp.new
echo "cdr realize template <templatename>" >> realizetemp.new
for i in `cat servers`
do
echo " g_$i" >> realizetemp.new
done
echo "echo \"Return value:\$?\"" >> realizetemp.new
echo "YOU NEED TO MODIFY REALIZETEMP"
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
39
To Synchronize the servers
echo "#!/bin/ksh" > syncsubs.new
chmod 700 syncsubs.new
echo "date" >> syncsubs.new
echo "echo \"Starting to Sync\"" >> syncsubs.new
for i in `cat pub`
do
echo "cdr sync replset -m g_$i -s <templatename> --firetrigger" >> syncsubs.new
for i in `cat servers`
do
echo g_$i >> syncsubs.new
done
echo "echo \"Return value:\$?\"" >> syncsubs.new
Done
echo "YOU NEED TO MODIFY SYNCSUBS"
Presentation_ID
© 2006 Cisco Systems, Inc. All rights reserved.
Cisco Public
40